一是在请求头中添加Authorization: Authorization: "Basic 用户名和密码的base64加密字符串" 。
客户端将用户名和密码中间用“:”分隔合并,并将合并后的字符串用BASE64编码,在每次请求数据 时,将密文附加于请求头(Request Header)Authorization: Basic XXXXXXX中。
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732173-112149035.jpg)
Authorization: Basic client_id:client_secret 的base64加密字符串
例如 Authorization: Basic renrenio:renrenio
base64解码
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732304-199319810.jpg)
请求头 authorization:Basic cmVucmVuaW86cmVucmVuaW8=
- /oauth/authorize 授权端点
- /oauth/token 令牌端点
- /oauth/confirm_access 用户批准授权的端点
- /oauth/error 用于渲染授权服务器的错误
- /oauth/check_token 资源服务器解码access token
- /oauth/check_token 当使用JWT的时候,暴露公钥的端点
- 密码模式(resource owner password credentials)
- 授权码模式(authorization code)
- 简化模式(implicit)
- 客户端模式(client credentials)
##参数说明
response_type:表示授权类型,必选项,此处的值固定为"code"
client_id:表示客户端的ID,必选项
redirect_uri:表示重定向URI,可选项
scope:表示申请的权限范围,可选项
state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值
Authorization Basic cmVucmVuaW86cmVucmVuaW8=
Authorization Bearer ee844482-76e3-4b11-be35-1808b63dc733
auth/oauth/token 获取token 的时候,能否不需要head Authorization , 而且 这个 Authorization 的值(cmVucmVuaW86cmVucmVuaW8=) 是怎么来的,应该是 clientid:clientScret 格式进行base64加密后的字符串 最后一张图,我base64 了, 和 框架 的 不一样 。
授权码模式(authorization code)
http://localhost:8081/auth/oauth/token?grant_type=password&username=lixx&password=dw123456
数据库加密 $2a$10$aiWOK7GmRzyLyRihSF0cMedcbsEo0t11/y8f.tnBkF2hCeSd0Bq.i
client_secret=renrenio
我这边新添加了客户端,现在客户端sys_oauth_client_details表client_secret密码默认是renrenio,前端验证是renrenio:renrenio,我现在添加了其他客户端不能所有密码都一样吧?所以想请问这个client_secret字段的密码是怎么加密的?
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732288-804694907.jpg)
请求参数:
返回信息:
{
"access_token": "4eb73337-d8a2-482e-aec2-bf90ac5ca61b",
"token_type": "bearer",
"refresh_token": "06e8e48e-6e95-485c-803e-8901c187133f",
"expires_in": 49999,
"scope": "all",
"code": 0
}
第一步:
sys_user
密码加密
@Autowired
private PasswordEncoder passwordEncoder;
String s = passwordEncoder.encode("admin");
第二步:
sys_oauth_client_details
//System.out.println(new BCryptPasswordEncoder().encode("beautyfarm4212"));
可以用的 $2a$10$xpaBOu5z2gSXuj8wfXhS5OmgH4ChUU7Gy120OFH5YHGqDmBzxH2BO
第三步 登录:
返回结果
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732478-1421795210.jpg)
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732410-344550973.jpg)
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732474-1530319428.jpg)
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732267-591935975.jpg)
![](https://img2020.cnblogs.com/blog/565032/202107/565032-20210729091732263-2144907731.jpg)
第一步
第二步 Authorization Basic cmVucmVuaW86cmVucmVuaW8=
第三步
{
"access_token": "4eb73337-d8a2-482e-aec2-bf90ac5ca61b",
"token_type": "bearer",
"refresh_token": "06e8e48e-6e95-485c-803e-8901c187133f",
"expires_in": 39454,
"scope": "all",
"code": 0
}