博客
关于我
资源授权?对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/

    你可能感兴趣的文章
    Node的Web应用框架Express的简介与搭建HelloWorld
    查看>>
    Node第一天
    查看>>
    node编译程序内存溢出
    查看>>
    Node读取并输出txt文件内容
    查看>>
    node防xss攻击插件
    查看>>
    noi 1996 登山
    查看>>
    noi 7827 质数的和与积
    查看>>
    NOI-1.3-11-计算浮点数相除的余数
    查看>>
    NOI2010 海拔(平面图最大流)
    查看>>
    NOIp2005 过河
    查看>>
    NOIP2011T1 数字反转
    查看>>
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>