OAuth2 的四种授权模式

作者: 乌鲁木齐001号程序员 | 来源:发表于2020-07-17 19:33 被阅读0次

    OAuth2 四种授权模型

    Resource owner password | 手机 APP
    Resource owner password.png
    • 适用于 APP,APP(客户端应用,对应于 Web 应用的 Angular + Node 开发的前端应用) 是自己开发的,可以完全信任;
    • 这种方式不适用于 Web 应用,因为 Web 应用的使用形态,username 和 password 不是填写在自己开发的 APP 上,而是填写在浏览器上,浏览器是开发人员无法控制的,无法保证其安全性;
    Authorization code grant | Web 应用
    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
    Implicit.png
    • 其实是在 Authorization code grant 的模式下的简化版本;
    • 在授权服务器认证完身份之后,直接返回令牌给浏览器;
    • 有一些客户端应用是没有服务器的,就是一堆 html,css,js;这种模式一般都不会采用,因为前端技术已经发展到现在的水平,很好有前端应用会没有自己的服务器;
    Client credential
    Client credential .png
    • 这就跟没授权没有任何区别;

    相关文章

      网友评论

        本文标题:OAuth2 的四种授权模式

        本文链接:https://www.haomeiwen.com/subject/iqsnhktx.html