使用访问令牌 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用访问令牌

用户池访问令牌包含有关经过身份验证的用户的声明、用户组列表和作用域列表。访问令牌的用途是在用户池中用户的环境中授予 API 操作权限。例如,您可以使用访问令牌向您的用户授予添加、更改或删除用户属性的访问权限。

访问令牌以 JSON Web Token (JWT) 表示。访问令牌的标头与 ID 令牌具有相同的结构。但是,密钥 ID (kid)不同,因为用于签署 ID 令牌和访问令牌的密钥不同。与 ID 令牌一样,您必须先在 Web API 中验证访问令牌的签名,然后才能信任它的任何声明。请参阅验证 JSON Web 令牌您可以将访问令牌过期时间设置为 5 分钟到 1 天之间的任何值。可以根据应用程序客户端设置此值。

重要

对于访问和 ID 令牌,请勿指定最少少于一小时。Amazon Cognito HosteDUi 使用有效期为一小时的 Cookie,如果您输入的时间不到一小时,您将无法获得较低的有效期。

访问令牌标头

标头包含两条令牌:密钥 ID (kid) 和算法 (alg)。

{ "kid" : "1234example=" "alg" : "RS256", }
密钥 ID (kid

kid 参数是一个提示,指示哪些密钥用于保护令牌的 JSON Web Signature (JWS)。

有关kid参数,请参阅密钥标识符(子)标题参数

算法 (alg

这些区域有:alg参数表示用于保护访问令牌的加密算法。用户池使用 RS256 加密算法,这是一种采用 SHA-256 的 RSA 签名。

有关alg参数,请参阅算法 (alg) 标头参数

访问令牌负载

这是来自访问令牌的示例负载。有关更多信息,请参阅 JWT 声明

{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups": [ "admin" ], "token_use": "access", "scope": "aws.cognito.signin.user.admin", "auth_time": 1562190524, "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "exp": 1562194124, "iat": 1562190524, "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "client_id": "57cbishk4j24pabc1234567890", "username": "janedoe@example.com" }
使用者 (sub

sub 声明是经过身份验证的用户的唯一标识符 (UUID)。它不同于用户名,后者可能不是唯一的。

Amazon Cognito 组 (cognito:groups

这些区域有:cognito:groups声明是用户所属的组列表。

令牌使用 (token_use

这些区域有:token_use声明描述了该令牌的预期用途。对于访问令牌,它的值始终为 access

Scope Scope (scope

范围声明是 Oauth 2.0 作用域的列表,用于定义令牌提供的访问权限。

身份验证时间 (auth_time

这些区域有:auth_time声明包含身份验证发生的时间。它的值是一个 JSON 数字,代表从 1970-01-01T 0:0:0 Z 开始以 UTC 格式为单位。在刷新时,它代表原始身份验证发生的时间,而不是发布令牌的时间。

颁发者 (iss

iss 声明采用以下格式:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}.

源 JTI (origin_jti

这些区域有:源 JWT 标识符,来自当original发生身份验证。

JTI (jti

这些区域有:jti声明是 JWT 的唯一标识符。

访问令牌签名

访问令牌的签名根据 JWT 令牌的标头和负载计算。在 Web API 中,当您在应用程序外部使用时,您必须始终先验证此签名,然后才能接受该令牌。有关更多信息,请参阅 。JWT 令牌