MST

星途 面试题库

面试题:安全认证之中等难度:OAuth授权流程基础

请详细描述OAuth 2.0授权码模式的主要流程步骤,并说明每一步涉及的主要交互信息。
11.7万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试
  1. 用户请求授权
    • 主要交互信息:用户在客户端应用(如移动应用、网页应用)发起操作,客户端应用将用户重定向到授权服务器的授权端点。重定向URL中包含客户端ID(标识客户端应用)、响应类型(授权码模式下为“code”)、重定向URI(授权服务器授权成功后回调客户端应用的URI)、范围(请求的权限范围,如读取用户信息、发布推文等)。例如:https://authorization-server.com/authorize?client_id=client1&response_type=code&redirect_uri=https%3A%2F%2Fclient-app.com%2Fcallback&scope=read%20write
  2. 授权服务器验证并询问用户授权
    • 主要交互信息:授权服务器验证客户端ID的合法性以及重定向URI是否与注册信息匹配。若验证通过,向用户展示授权页面,询问用户是否授权客户端应用访问所请求的范围。用户看到的信息包括客户端应用名称、请求的权限范围等。
  3. 用户授权
    • 主要交互信息:用户在授权页面选择授权或拒绝。若用户授权,授权服务器生成授权码,并将用户重定向到客户端应用的重定向URI,同时在重定向URI的查询参数中带上授权码。例如:https://client - app.com/callback?code=AUTHORIZATION_CODE
  4. 客户端应用请求令牌
    • 主要交互信息:客户端应用在收到包含授权码的重定向后,使用授权码、客户端ID、客户端密钥(用于验证客户端应用身份)向授权服务器的令牌端点发送请求以获取访问令牌。请求通常使用POST方法,请求体包含授权码、客户端ID、客户端密钥、grant_type(“authorization_code”)和重定向URI。例如:
    {
        "code": "AUTHORIZATION_CODE",
        "client_id": "client1",
        "client_secret": "CLIENT_SECRET",
        "grant_type": "authorization_code",
        "redirect_uri": "https://client - app.com/callback"
    }
    
  5. 授权服务器验证并颁发令牌
    • 主要交互信息:授权服务器验证授权码的有效性、客户端ID和客户端密钥的正确性以及重定向URI是否匹配。若验证通过,生成访问令牌(用于访问受保护资源)、刷新令牌(用于在访问令牌过期时获取新的访问令牌),并将它们返回给客户端应用。响应通常为JSON格式,例如:
    {
        "access_token": "ACCESS_TOKEN_VALUE",
        "token_type": "Bearer",
        "expires_in": 3600,
        "refresh_token": "REFRESH_TOKEN_VALUE"
    }
    
  6. 客户端应用使用令牌访问资源
    • 主要交互信息:客户端应用在后续对受保护资源(如用户的个人信息API)的请求中,将访问令牌放在请求头中(格式为Authorization: Bearer ACCESS_TOKEN_VALUE)发送给资源服务器。资源服务器验证访问令牌的有效性,若有效则返回请求的资源数据。