4.3.2. 访问令牌请求

客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求:

  • grant_type必需的。值必须设置为“password”。
  • username必需的。资源所有者的用户名。
  • password必需的。资源所有者的密码。
  • scope可选的。如3.3节所述的访问请求的范围。如果客户端类型是机密的或客户端被颁发了客户端凭据(或选定的其他身份验证要求),客户端必须如3.2.1)节所述与授权服务器进行身份验证。

例如,客户端使用传输层安全发起如下HTTP请求(额外的换行仅用于显示目的):

  1. POST /token HTTP/1.1
  2. Host: server.example.com
  3. Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
  4. Content-Type: application/x-www-form-urlencoded
  5. grant_type=password&username=johndoe&password=A3ddj3w

授权服务器必须:

  • 要求机密客户端或任何被颁发了客户端凭据(或有其他身份验证要求)的客户端进行客户端身份验证,
  • 若包括了客户端身份验证,验证客户端身份,并
  • 使用它现有的密码验证算法验证资源所有者的密码凭据。

由于这种访问令牌请求使用了资源所有者的密码,授权服务器必须保护端点防止暴力攻击(例如,使用速率限制或生成警报)。