OAuth2 的四种授权模式

OAuth2 四种授权模型

Resource owner password | 手机 APP
OAuth2 的四种授权模式_第1张图片
Resource owner password.png
  • 适用于 APP,APP(客户端应用,对应于 Web 应用的 Angular + Node 开发的前端应用) 是自己开发的,可以完全信任;
  • 这种方式不适用于 Web 应用,因为 Web 应用的使用形态,username 和 password 不是填写在自己开发的 APP 上,而是填写在浏览器上,浏览器是开发人员无法控制的,无法保证其安全性;
Authorization code grant | Web 应用
OAuth2 的四种授权模式_第2张图片
Authorization code grant.png
  • 适用于 Web 应用;
  • 如果用户需要身份认证的时候,直接从浏览器请求到授权服务器,用户输入 username 和 password 的操作是在授权服务器上的,授权服务器是开发人员可以完全控制的;
  • 用户可以只带 clientId 而不带 clientSecret,当授权服务器返回授权码给前端服务器时,由前端服务器带着 clientSecret 到授权服务器;
  • 这种方式下,没有任何敏感信息是放在浏览器中的;这是 Web 环境下最安全的授权模式;

第 2 步,浏览器直接把请求发到认证服务器的时候,Spring Security 的 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity) 方法,默认配置,需要填用户名密码,填好用户名密码之后,到认证服务器,认证服务器通过自己实现的 com.lixinlei.security.auth.oauth2.config.UserDetailsServiceImpl 去判断浏览器输入的用户名密码对不对;对了,才会走认证服务器发授权码到前端服务器的流程;

Implicit
OAuth2 的四种授权模式_第3张图片
Implicit.png
  • 其实是在 Authorization code grant 的模式下的简化版本;
  • 在授权服务器认证完身份之后,直接返回令牌给浏览器;
  • 有一些客户端应用是没有服务器的,就是一堆 html,css,js;这种模式一般都不会采用,因为前端技术已经发展到现在的水平,很好有前端应用会没有自己的服务器;
Client credential
OAuth2 的四种授权模式_第4张图片
Client credential .png
  • 这就跟没授权没有任何区别;

你可能感兴趣的:(OAuth2 的四种授权模式)