4.3.2. 访问令牌请求
客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求:
- grant_type必需的。值必须设置为“password”。
- username必需的。资源所有者的用户名。
- password必需的。资源所有者的密码。
- scope可选的。如3.3节所述的访问请求的范围。如果客户端类型是机密的或客户端被颁发了客户端凭据(或选定的其他身份验证要求),客户端必须如3.2.1)节所述与授权服务器进行身份验证。
例如,客户端使用传输层安全发起如下HTTP请求(额外的换行仅用于显示目的):
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=johndoe&password=A3ddj3w
授权服务器必须:
- 要求机密客户端或任何被颁发了客户端凭据(或有其他身份验证要求)的客户端进行客户端身份验证,
- 若包括了客户端身份验证,验证客户端身份,并
- 使用它现有的密码验证算法验证资源所有者的密码凭据。
由于这种访问令牌请求使用了资源所有者的密码,授权服务器必须保护端点防止暴力攻击(例如,使用速率限制或生成警报)。