OAuth协议中的授权模式
- 授权码模式(authorization code)
- 密码模式(resource owner password credentials)
- 客户端模式(client credentials)
- 简化模式(implicit)
授权码模式
1.用户访问第三方应用
2.第三方应用将用户导向认证服务器(Authorization Server)
3.用户同意授权(在认证服务器完成)
4.用户同意授权后,认证服务器将用户导回到第三方应用,并携带授权码。
5.第三方应用后台使用授权码向认证服务器申请令牌。
6.认证服务器验证授权码,验证通过后向第三方应用发送令牌。
![](https://img.haomeiwen.com/i7391491/0f69d9862ee911be.png)
SpringSocial
引导用户经过上述授权过程,从服务提供者的资源服务器中获取到用户信息,并构建Authentication放入SpringSecurity的SecurityContext中。
当向SecurityContext中放入认证过的Authentication实例时,对SpringSecurity来说相当于登录成功。
以上为第三方登录的原理。
![](https://img.haomeiwen.com/i7391491/5883bec1ca345dcd.png)
SpringSocial将上述过程封装到SocialAuthenticationFilter中,并将该过滤器加入到SpringSecurity的过滤器链上。
![](https://img.haomeiwen.com/i7391491/ac0fbbe0cb5b69eb.png)
网友评论