博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oauth2密码登陆的一个大坑——scope
阅读量:3930 次
发布时间:2019-05-23

本文共 1588 字,大约阅读时间需要 5 分钟。

笔者最近在给自己的分布式项目添加授权登陆模块的时候碰到了一个问题,就是调用密码登陆服务(/oauth/token)的时候报400的错误,起初以为是入参字段写错了或少写了,后面才发现并不是这样,而是scope这个入参数的隐藏属性导致的,下面记录下笔者碰到的问题、解决思路、和解决办法

文章目录


一、碰到的问题

2021-07-02 10:51:02.821 [http-nio-8877-exec-1] ERROR c.m.u.service.impl.LoginServiceImpl - [TID:dce9a7a6605645669b1727bb0d6b8ff5.118.16251942566390001] - 用户:muyichen,登陆异常:{
} org.springframework.web.client.HttpClientErrorException$BadRequest: 400 null at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79) at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102) at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) at org.springframework.web.client.RestTemplate.handleResponse$original$UOFkryug(RestTemplate.java:778) at org.springframework.web.client.RestTemplate.handleResponse$original$UOFkryug$accessor$JA7AeVwq(RestTemplate.java) at org.springframework.web.client.RestTemplate$auxiliary$FcdkGx0t.call(Unknown Source)

二、解决思路

  • 1、检查错误日志
    看到上面面的日志后,果断选择了pass,日志中并没有给出什么能解决问题的错误信息;
  • 2、尝试用postman直接请求该地址
    果然,代码中无法转译的错误信息,使用postman请求时一目了然,错误如下:
{
"error": "invalid_scope", "error_description": "Invalid scope: all", "scope": "read write"}

三、解决办法

将原scope参数中的all入参值改为:read、write或者read write

以空格隔开的参数,oauth会将起读取成两个参数,如下图:
在这里插入图片描述

四、总结

  • 1、如将client_id和client_secret两个参数放在请求体或者url中,oauth2的scope取值范围只有all,如下图:
    在这里插入图片描述
  • 2、如将client_id和client_secret两个参数放在请求头中,oauth2的scope取值范围会变成:read、write,如下图
    在这里插入图片描述

转载地址:http://yktgn.baihongyu.com/

你可能感兴趣的文章
线程基础:多任务处理(15)——Fork/Join框架(要点2)
查看>>
线程基础:多任务处理(16)——Fork/Join框架(排序算法性能补充)
查看>>
线程基础:多任务处理(14)——Fork/Join框架(要点1)
查看>>
架构设计:系统存储(13)——MySQL横向拆分与业务透明化(1)
查看>>
架构设计:系统存储(14)——MySQL横向拆分与业务透明化(2)
查看>>
架构设计:系统存储(5)——MySQL数据库性能优化(1)
查看>>
架构设计:系统存储(2)——块存储方案(2)
查看>>
架构设计:系统间通信(45)——阶段性问题记录
查看>>
架构设计:系统间通信(44)——自己动手设计ESB(5)
查看>>
架构设计:系统存储(1)——块存储方案(1)
查看>>
架构设计:系统间通信(42)——自己动手设计ESB(3)
查看>>
在工作时走神的闪光
查看>>
Ajax使用注意事项
查看>>
FileChannel 专讲
查看>>
使用FileChannel下载本地文件及扩展
查看>>
linux文件权限与目录配置问题与解答(整理篇)
查看>>
linux文件与目录管理问题与回答(整理篇)
查看>>
struts1 组件模型
查看>>
java 数组笔记整理
查看>>
一般系统论的方法 读书笔记
查看>>