博客
关于我
资源授权?对OAuth2.0的一次重新认识的过程
阅读量:418 次
发布时间:2019-03-06

本文共 1938 字,大约阅读时间需要 6 分钟。

OAuth2授权机制解析:以QQ登录博客园为例

OAuth2作为一种开放标准,为第三方应用获取用户资源提供了一种安全的授权方式。它通过分发令牌(Token),让第三方应用在不直接获取用户敏感信息的情况下,访问用户在其他网站上的资源。以下将从基本概念到授权流程,再到具体模式的实现细节,详细解读OAuth2的工作原理。

OAuth2基本概念

OAuth2的主要目标是简化客户端(第三方应用)的开发流程,同时为不同类型的应用提供标准化的授权方式。它通过四个角色协同工作:

  • 资源所有者(Resource Owner):资源的拥有者,如小明。
  • 资源服务器(Resource Server):资源所在的服务器,如QQ应用。
  • 授权服务器(Authorization Server):用于验证客户端身份并颁发令牌的服务器。
  • 第三方应用(Client):请求访问受保护资源的应用,如博客园。
  • OAuth2标准授权流程

    以QQ登录博客园为例,OAuth2的授权流程可以分为以下几个步骤:

  • QQ授权验证:小明登录QQ账号并同意博客园的授权请求。
  • 授权许可凭证获取:QQ返回授权许可凭证(Authorization Code),如12345678
  • 令牌获取:博客园使用授权许可凭证向授权服务器请求令牌(Token),如access_tokenrefresh_token
  • 资源访问:博客园凭借令牌获取QQ用户的资源,如昵称和头像。
  • OAuth2授权模式

    OAuth2提供了多种授权模式,主要用于不同场景的客户端:

    1. 授权码模式(Authorization Code)

    • 特点:授权码模式是最常用的模式,适用于需要后端处理的客户端。

    • 流程

    • 客户端(博客园)发起授权请求,携带client_idredirect_uriscope等参数。
    • 授权服务器(QQ)验证请求,返回授权码。
    • 客户端将授权码发送后端,后端向授权服务器获取令牌。
    • 客户端使用令牌访问资源。
    • 参数说明

      • client_id:客户端唯一标识ID。
      • redirect_uri:授权成功后的重定向地址。
      • state:防止CSRF攻击的状态码。
      • scope:授权范围,如get_user_info

    2. 隐式授权模式(Implicit)

    • 特点:适用于无后端的客户端,直接获取令牌。

    • 流程

    • 客户端发起授权请求,携带client_idredirect_uriresponse_type=token等参数。
    • 授权服务器返回令牌(access_tokentoken_typeexpires_in)。
    • 客户端直接使用令牌访问资源。
    • 优势:简化了授权流程,适合移动应用等场景。

    3. 用户密码模式(Resource Owner Password Credentials)

    • 特点:客户端通过用户名和密码获取令牌,适用于信任的本机应用。

    • 流程

    • 客户端向授权服务器提交grant_type=password,并提供usernamepassword
    • 授权服务器验证后返回令牌。
    • 客户端使用令牌访问资源。
    • 注意事项:严格控制权限,确保仅限本机应用使用。

    4. 客户端模式(Client Credentials)

    • 特点:客户端作为资源所有者,直接获取令牌。

    • 流程

    • 客户端向授权服务器提交grant_type=client_credentials,并提供client_idclient_secret
    • 授权服务器验证后返回令牌。
    • 客户端使用令牌访问资源。
    • 应用场景:如房地产平台的客户端应用获取用户数据。

    刷新令牌(Refresh Token)

    当令牌过期时,客户端可以使用刷新令牌(refresh_token)重新获取新的令牌。以下是具体流程:

  • 客户端向授权服务器提交grant_type=refresh_tokenrefresh_token
  • 授权服务器验证后返回新的令牌。
  • 客户端更新现有令牌。
  • OAuth2在博客园登录案例

    以QQ登录博客园为例,完整流程如下:

  • QQ登录页面:小明登录QQ账号并同意博客园授权。
  • 授权许可凭证:QQ返回授权码12345678
  • 后端处理:博客园前端将授权码发送后端,后端向授权服务器请求令牌。
  • 令牌获取:授权服务器返回access_tokenrefresh_token
  • 资源访问:博客园使用令牌获取QQ用户资源,如昵称和头像。
  • 总结

    OAuth2通过标准化的授权流程,为第三方应用程序提供了一种安全的资源访问方式。无论是授权码模式、隐式授权模式,还是用户密码模式,核心目标都是在不泄露用户敏感信息的情况下,实现资源共享。理解OAuth2授权机制,有助于开发者更好地构建安全、高效的应用程序。

    转载地址:http://whlkz.baihongyu.com/

    你可能感兴趣的文章
    Postman还能做Mock?又学了一招!
    查看>>
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>