OAuth 2.0 授予
Amazon Cognito 用户池 OAuth 2.0 授权服务器发布令牌,以响应三种类型的 OAuth 2.0 授权授予
- 授予授权代码
-
为了响应您的成功身份验证请求,授权服务器会在回调 URL 的
code参数中添加一个授权码。然后,您必须与令牌端点交换 ID、访问令牌和刷新令牌的代码。要请求授权码授予,请在请求中将response_type设置为code。有关示例请求,请参阅示例:授权代码授予。Amazon Cognito 在授权码授予中支持代码交换的证明密钥(PKCE)。授权码授予是最安全的授权授予形式。它不会直接向您的用户显示令牌内容。相反,您的应用程序负责检索和安全存储用户的令牌。在 Amazon Cognito 中,授权码授予是从授权服务器获取所有三种令牌类型(ID、访问和刷新)的唯一方法。您也可以通过 Amazon Cognito 用户池 API 从身份验证中获取所有三种令牌类型,但是 API 不使用除
aws.cognito.signin.user.admin以外的范围发布访问令牌。 - 隐式授予
-
为了响应成功的身份验证请求,授权服务器会在
access_token参数中附加一个访问令牌,并在您的回调 URL 的id_token参数中附加一个 ID 令牌。隐式授予不要求与令牌端点进行额外的交互。要请求隐式授予,请在请求中将response_type设置为token。隐式授予仅生成 ID 和访问令牌。有关示例请求,请参阅示例:不带 openid 范围的令牌(隐式)授权。隐式授予是旧版授权授予。与授权码授予不同,用户可以拦截和检查您的令牌。要防止通过隐式授予交付令牌,请将您的应用程序客户端配置为仅支持授权码授予。
- 客户端凭证
-
客户端凭证是一种仅限授权的授予,适用于机器对机器访问。要获得客户凭证授予,请绕过对端点授权,并直接向令牌端点生成请求。您的应用程序客户端必须具有客户端密钥,并且仅支持客户端凭证授予。为了响应您的成功请求,授权服务器会返回访问令牌。
来自客户端凭证授予的访问令牌是一种包含 OAuth 2.0 范围的授权机制。通常,令牌包含自定义范围声明,这些声明授权 HTTP 操作访问那些访问受保护的 API。有关更多信息,请参阅范围、M2M 和带资源服务器的 API。
客户端凭证授予会增加您的 Amazon 账单成本。有关更多信息,请参阅 Amazon Cognito 定价
。 - 刷新令牌
-
您可以直接从令牌端点请求刷新令牌授予。此授予会返回新的 ID 令牌和访问令牌,以交换有效的刷新令牌。
要更深入地了解这些授予及其实施,请参阅 Amazon 安全博客中的 How to use OAuth 2.0 in Amazon Cognito: Learn about the different OAuth 2.0 grants