Oauth2有以下授权模式:
授权码模式(Authorization Code)
隐式授权模式(Implicit)
密码模式(Resource Owner Password Credentials)
客户端模式(Client Credentials)
其中授权码模式和密码模式应用较多
一、授权码授权流程
1.1、上边例举的程序员网站使用微信认证的过程就是授权码模式,流程如下:
1、客户端请求第三方授权
2、用户(资源拥有者)同意给客户端授权
3、客户端获取到授权码,请求认证服务器申请令牌
4、认证服务器向客户端响应令牌
5、客户端请求资源服务器的资源,资源服务校验令牌合法性,完成授权
6、资源服务器返回受保护资源
1.2、申请授权码
请求认证服务获取授权码:
Get请求:
localhost:40400/auth/oauth/authorize?client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost
参数列表如下:
client_id:客户端id,和授权配置类中设置的客户端id一致。
response_type:授权码模式固定为code
scop:客户端范围,和授权配置类中设置的scop一致。
redirect_uri:跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)。
首先跳转到登录页面:
图片.png
输入账号和密码,点击 Login。
Spring Security接收到请求会调用UserDetailsService接口的loadUserByUsername方法查询用户正确的密码。
当前导入的基础工程中将正确的密码硬编码为“123”,所以这里账号随意输入,密码输入123即可认证通过。
接下来进入授权页面:
图片.png
点击“同意”。
接下来返回授权码:
认证服务携带授权码跳转redirect_uri
图片.png
网友评论