📜  密码模式 (1)

📅  最后修改于: 2023-12-03 15:25:10.225000             🧑  作者: Mango

密码模式

密码模式(password grant type)是OAuth2.0授权模式中的一种,用于用户资源拥有者向客户端应用程序提供其用户名和密码来获取访问令牌(access token)的一种模式。

客户端流程
  1. 客户端向授权服务器发送以下数据

    • grant_type - 必选项,值固定为"password"。

    • usernamepassword - 必选项,用户凭证。

    • scope - 可选项,表示授权范围。

      POST /token HTTP/1.1
      Host: server.example.com
      Content-Type: application/x-www-form-urlencoded
      
      grant_type=password&username=johndoe&password=A3ddj3w
      
  2. 授权服务器对客户端进行身份验证,如果认证信息无误,则颁发访问令牌(access token)。

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
    {
        "access_token":"mF_9.B5f-4.1JqM",
        "token_type":"Bearer",
        "expires_in":3600,
        "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
    }
    
授权服务器流程

在密码模式下,授权服务器不需要向用户询问是否同意授权请求,因为用户本身就已经明确授权了。授权服务器的任务是对客户端进行身份验证和检查客户端是否有权使用给定用户的凭证。如果身份验证成功,授权服务器应该据此颁发访问令牌。

安全性

密码模式的最大安全缺点在于用户凭证在客户端和授权服务器之间传输。如果没有正确处理,攻击者可能会获得用户的凭据信息。拥有用户凭证就可以获得访问令牌(access token),并进一步访问授权应用程序中的资源。因此,建议在传输过程中使用HTTPS协议进行加密,以提高安全性。