SpringSecurity 原理(二)
感谢黑马程序员!http://www.itheima.com/
Oauth2.0 提供的认证授权模式:
1. 授权码模式 2. 密码模式 3. 客户端模式 4. 简化模式
资源地址和权限,什么时候初始化到 spring 容器中的?借助:DefaultSingletonBeanRegistry
初始化 beanName:springSecurityFilterChain 时
存入 DefaultFilterInvocationSecurityMetadataSource 的 requestMap
如图:
分布式认证授权方案:OAuth2.0
springboot-security 基本搭建:
说明:
1、客户端请求第三方授权 用户进入黑马程序的登录页面,点击微信的图标以微信账号登录系统,用户是自己在微信里信息的资源拥有者。 点击“微信”出现一个二维码,此时用户扫描二维码,开始给黑马程序员授权。 2、资源拥有者同意给客户端授权
资源拥有者扫描二维码表示资源拥有者同意给客户端授权,微信会对资源拥有者的身份进行验证, 验证通过后
,微信会询问用户是否给授权黑马程序员访问自己的微信数据,用户点击“确认登录”表示同意授权,微信认证
服务器会 颁发一个授权码,并重定向到黑马程序员的网站。 3、客户端获取到授权码,请求认证服务器申请令牌
此过程用户看不到,客户端应用程序请求认证服务器,请求携带授权码。 4、认证服务器向客户端响应令牌
微信认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源的通行证。
此交互过程用户看不到,当客户端拿到令牌后,用户在黑马程序员看到已经登录成功。 5、客户端请求资源服务器的资源
客户端携带令牌访问资源服务器的资源。 黑马程序员网站携带令牌请求访问微信服务器获取用户的基本信息。 6、资源服务器返回受保护资源
资源服务器校验令牌的合法性,如果合法则向用户响应资源信息内容。