一.摘要
Spring Cloud Security 为构建安全的SpringBoot应用提供了一系列解决方案,结合Oauth2可以实现单点登录、令牌中继、令牌交换等功能。
二.OAuth2 简介
OAuth 2.0是用于授权的行业标准协议。OAuth 2.0为简化客户端开发提供了特定的授权流,包括Web应用、桌面应用、移动端应用等。
三.OAuth2 相关名词解释
- Resource owner(资源拥有者):拥有该资源的最终用户,他有访问资源的账号密码。可以理解为用户;
- Resource server(资源服务器):拥有受保护资源的服务器,如果请求包含正确的访问令牌,可以访问资源;
- Client(客户端):访问资源的客户端,会使用访问令牌去获取资源服务器的资源,可以是浏览器、移动设备或者服务器;
- Authorization server(认证服务器):用于认证用户的服务器,如果客户端认证通过,发放访问资源服务器的令牌。
四.四种授权模式
- 授权码模式(最常用):正宗的OAuth2的授权模式,客户端先将用户导向认证服务器,登录后获取授权码,然后进行授权,最后根据授权码获取访问令牌;
- 简化模式:和授权码模式相比,取消了获取授权码的过程,直接获取访问令牌;
- 密码模式:客户端直接向用户获取用户名和密码,之后向认证服务器获取访问令牌;
- 客户端模式:客户端直接通过客户端认证(比如client_id和client_secret)从认证服务器获取访问令牌。
其中,比较常用的是授权码模式 和 密码模式。
五.4种模式的图示
一. 授权码模式
- 用户访问页面
- 访问的页面将请求重定向到认证服务器
- 认证服务器向用户展示授权页面,等待用户授权
- 用户授权,认证服务器生成一个code和带上client_id发送给应用服务器,然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
- 将code、client_id、client_secret传给认证服务器换取access_token和 refresh_token
- 将access_token和refresh_token传给应用服务器
- 验证token,访问真正的资源页面
二.密码模式
- 用户访问用页面时,输入用户的账号密码
- 应用页面那种这个信息去认证服务器授权
- 认证服务器授权通过,拿到token,访问真正的资源页面
三.客户端模式:
- 客户端向认证服务器进行身份认证,并要求一个token;
- 认证服务器确认无误后,向客户端提供token;
- 客户端携带token向资源服务器请求访问资源;
- 资源服务器返回资源。
六.总结一下四种模式的应用场景
-
授权码模式:第三方Web服务器端应用与第三方原生App
-
简化模式:第三方单页面应用
-
密码模式:第一方单页应用与第一方原生App
-
客户端模式:没有用户参与的,完全信任的服务器端服务
https://www.cnblogs.com/Innocent-of-Dabber/p/11009811.html