• 【OAuth】OAuth2.0四种授权模式


    什么是OAuth

    开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

    OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务器提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供的某些特定信息,而非所有内容。

    OAuth2.0是OAuth协议的下一个版本,但不向下兼容OAuth1.0。OAuth2.0关注客户端开发者的简易性,同时为Web应用、桌面应用、手机和智能设备提供专门的认证流程。

    资源拥有者凭证许可(Resource Owner Password Credentials Grant)

    资源拥有者的凭证,就是用户的凭据,就是用户名和密码。

    在这里插入图片描述

    1. 小明(资源拥有者)访问小兔软件,录入用户名和密码,索要用户名和密码,就是资源拥有者凭据许可类型的特点。
    2. 携带用户名和密码请求访问令牌access_token值。
    3. 授权服务在验证用户名和密码之后,生成access_token的值并返回给第三方软件。
    4. 后面用户访问受保护资源的时候就附带着access_token值去访问。

    客户端凭证许可(Client Credentials Grant)

    在客户端凭证许可授权流程中,就不再需要资源拥有者这个角色了。当然,你也可以形象地理解为“资源拥有者被塞进了第三方软件中”或者“第三方软件就是资源拥有者”。这种场景下的授权,便是客户端凭证许可,第三方软件可以直接使用注册时的app_idapp_secret来换回访问令牌token的值。

    A

    1. 第三方软件通过后端服务项授权服务发送请求,告诉授权服务要使用第三方软件凭据的方式去请求访问。
    2. 在验证app_id 和 app_secret的合法性之后,生成access_token的值并返回。
    3. 用户访问受保护资源的时候就附带着access_token值去访问

    隐式许可(Implicit Grant)

    如果使用的软件应用没有后端服务,就是在浏览器执行的,比如纯粹的JavaScript应用,应该如何使用OAuth 2.0 呢?

    这种情况的授权流程就可以使用隐式许可流程,可以理解为第三方软件小兔直接嵌入浏览器中了。

    因此,隐式许可授权流程的安全性会降低很多。再授权流程中,没有服务端的小兔软件相当于是嵌入到了浏览器中,访问浏览器的过程相当于接触了小兔软件的全部。

    在这里插入图片描述

    1. 用户通过浏览器访问第三方软件。此时,第三方软件实际上是嵌入浏览器中执行的应用程序。
    2. 请求访问令牌access_token值。
    3. 生成access_token的值,通过前端通信返回给第三方软件。
    4. 用户访问受保护资源的时候就附带着access_token值去访问

    授权码授权模式(Authorization code Grant)

    在这里插入图片描述

    1. 用户访问页面
    2. 访问页面重定向到认证服务器(也可以叫做认证中心)
    3. 认证服务器向用户展示授权页面,等待用户授权
    4. 用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
    5. 应用服务器拿到code,client_id去后台查询对应的client_secret
    6. 将code、client_id、client_secret传给认证服务器换取access_token和refresh_token
    7. 将access_token和refresh_token传给应用服务器
    8. 验证token,访问真正的资源页面。
  • 相关阅读:
    热门Java开发工具IDEA入门指南——从Eclipse迁移到IntelliJ IDEA(三)
    俄罗斯黑客利用Roundcube零日漏洞窃取政府电子邮件
    数据类型与运算符-java
    使用Springboot时,Controller层有方法的参数是一个实体类,但是并不需要其中所有的参数
    Mybatis 的架构原理解读
    Windows 12 开源网页版
    D2. Dances (Hard Version) Codeforces Round 905 (Div. 2)
    淘宝详情源数据接口解析
    python:最小二乘法拟合原理及代码实现
    “安全生产月”专题报道:AI智能监控技术如何助力安全生产
  • 原文地址:https://blog.csdn.net/m0_53328239/article/details/133803410