MST

星途 面试题库

面试题:安全认证之OAuth授权码模式的流程细节

请详细描述OAuth授权码模式的完整流程,包括涉及的各个角色以及他们之间的交互步骤,并说明每个步骤中传递的关键参数有哪些。
47.1万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

OAuth授权码模式的完整流程涉及以下几个角色:资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。以下是详细的交互步骤及每个步骤中传递的关键参数:

  1. 客户端请求授权

    • 发起请求:客户端向授权服务器发起授权请求,引导资源所有者进行授权。
    • 请求地址:通常是授权服务器的授权端点(Authorization Endpoint)。
    • 关键参数
      • response_type:设置为code,表示使用授权码模式。
      • client_id:客户端在授权服务器注册的唯一标识。
      • redirect_uri:授权服务器在授权成功后重定向回客户端的URI。
      • scope:请求的权限范围,例如readwrite等。
  2. 授权服务器展示授权页面

    • 展示页面:授权服务器接收到请求后,向资源所有者展示授权页面,询问是否授权客户端访问其资源。
  3. 资源所有者授权

    • 授权操作:资源所有者决定是否授权客户端访问其资源。如果授权,授权服务器继续下一步;如果拒绝,授权服务器返回错误信息给客户端。
  4. 授权服务器颁发授权码

    • 颁发授权码:授权服务器生成一个授权码(Authorization Code),并将其通过redirect_uri重定向回客户端。
    • 重定向地址redirect_uri
    • 关键参数
      • code:授权码。
  5. 客户端请求访问令牌

    • 发起请求:客户端接收到授权码后,使用该授权码向授权服务器的令牌端点(Token Endpoint)请求访问令牌(Access Token)。
    • 请求方式:通常为POST请求。
    • 关键参数
      • grant_type:设置为authorization_code,表示使用授权码模式获取令牌。
      • code:之前获取的授权码。
      • redirect_uri:与之前请求授权时一致的重定向URI。
      • client_id:客户端ID。
      • client_secret:客户端在授权服务器注册的密钥(如果客户端为保密客户端)。
  6. 授权服务器验证并颁发访问令牌

    • 验证与颁发:授权服务器验证客户端提交的参数,包括授权码的有效性、redirect_uri的一致性等。验证通过后,生成访问令牌(Access Token)和刷新令牌(Refresh Token,可选),并返回给客户端。
    • 响应参数
      • access_token:访问令牌,用于访问资源服务器的资源。
      • token_type:令牌类型,如Bearer
      • expires_in:访问令牌的过期时间(以秒为单位)。
      • refresh_token:刷新令牌(如果颁发),用于在访问令牌过期时获取新的访问令牌。
  7. 客户端使用访问令牌访问资源

    • 发起请求:客户端使用获取到的访问令牌向资源服务器发起资源访问请求。
    • 请求头:在请求头中添加Authorization: Bearer <access_token>
    • 资源服务器验证:资源服务器验证访问令牌的有效性。如果有效,返回请求的资源;如果无效,返回错误信息。