这篇文章接着记录OAuth2有关内容,主要内容还是偏实战一些
OAuth2实战 为什么要用OAuth2单体架构: cookie session 机制
分布式架构方案:session 共享
分布式架构方案:基于token
cookie session 和 token 的区别
工程结构• cookie是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难
• 移动端应用没有cookie,所以对于移动端支持不好
• token基于header传递,部分解決了CSRF攻击
• token要比session D大,客户端存储在Local Storage中,可以直接被JS读取
依赖构件• 授权服务器:颁发和验证令牌
• 资源服务器:提供需要令牌才能访问的服务
授权服务器配置• spring-cloud-starter-oauth2
• spring-cloud-starter-security
OAuth2配置类继承AuthorizationServerConfigurerAdapter,配置OAuth2相关参数
资源服务器配置
Spring Security配置类,继承WebSecurityConfigurerAdapter,实现Spring Security权限配置
OAuth2配置类继承AuthorizationServerConfigurerAdapter
Security配置类继承WebSecurityConfigurerAdapter
授权模式 授权码模式
HelloController中定义了受限访问的资源
简化模式• 申请授权码
• 输入用户名密码,确认身份
• 返回授权码
• 客户端携带授权码访问授杈服务器
• 验证授权码通过,返回令牌
简化模式不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此称简化模式。简化模式是相对于授权码模式市言的
密码模式A.申请令牌
B.输入用户名密码,验证身份
C.授权通过返回令牌
D.客户端携带令牌访问资源
E.验证令牌通过返回资源
密码模式中,用户向客户端提供自己的用户名和密码,这通常用在用户对客户端高度信任的情况,项目常采用这种模式
客户端模式• 输入用户名密码申请令牌
• 授权服务器对客户端进行身份验证
• 授权通过返回令牌
客户端模式是指客户端使用自己的名义而不是用户的名义向服务提供者申请授权,很少使用



