为什么授权代码流中需要授权代码?

时间:2021-05-05 03:53:05

标签: java spring-security oauth-2.0 spring-security-oauth2

我对授权代码流程感到不清楚。隐式流和授权码流的主要区别在于授权码流验证客户端(使用 id 和 secret)。首先,我定义了授权代码流程的步骤,并向他们提出了我的疑问。

授权码流程步骤(部分略过)

  1. 授权码请求发送到授权服务器,然后用户重定向到登录页面

       request contains
    
        - response_type=auth code
        - scope
        - state 
        - redirect_uri
        - client-id
    
  2. 如果用户凭据正确,则身份验证服务器使用身份验证代码和状态重定向 url

  3. 客户端向授权服务器发送 post 请求以获取访问令牌

        request contains
    
           - grant type
           - code (auth code)
           - redirect_uri
           - client_id
           - client_secret
    
     once auth server validated above request we get access token as reponse
    
  4. 使用访问令牌客户端将访问资源服务器

我的问题是为什么我们要在第三步而不是第一步发送客户端机密。如果我们在第一步发送客户端 id 和客户端密码并将用户重定向到登录页面,那么在他登录后客户端可以直接获取访问令牌,为什么需要与身份验证代码相关的步骤。

我对上述步骤的期望是

  1. 用户点击链接,请求发送到认证服务器。如果它们有效,则验证客户端 ID 和密码,然后用户将被重定向到登录页面

     request contains
       - response_type: access token
       - scope
       - state 
       - redirect_uri
       - client-id
       - client-secret
    
  2. 如果用户凭据正确,那么身份验证服务器会使用访问令牌和状态重定向 url

  3. 使用访问令牌客户端将访问资源服务器

客户端身份验证可以在第一步完成为什么我们需要通过在第三步发送客户端密钥来拖动它。为什么我们需要与身份验证代码相关的步骤令人困惑 谁能解释一下与身份验证代码相关的步骤的目的?

0 个答案:

没有答案