本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解访问令牌
用户池访问令牌包含有关经身份验证的用户声明、用户组列表以及范围列表。访问令牌的目的是对API操作进行授权。您的用户群体接受访问令牌以授权用户执行自助操作。例如,您可以使用访问令牌授予用户访问权限以添加、更改或删除用户属性。
通过访问令牌中的 OAuth2.0 作用
您的用户的访问令牌是允许从 userInfo 端点 中请求有关您的用户属性的更多信息的权限。您的用户的访问令牌也是读取和写入用户属性的权限。访问令牌授予的属性访问级别取决于分配给应用程序客户端的权限以及在令牌中授予的范围。
访问令牌是 JSONWeb 令牌 (JWT)kid
) 声明的值与来自同一用户会话的 ID 令牌中 kid
声明的值不匹配。在您的应用程序代码中,单独验证 ID 令牌和访问令牌。在验证签名之前,请勿信任访问令牌中的声明。有关更多信息,请参阅 验证JSON网络令牌。您可以将访问令牌过期时间设置为 5 分钟到 1 天之间的任何值。您可以按应用程序客户端设置此值。
重要
对于访问令牌和 ID 令牌,如果使用托管 UI,请勿将最小值指定少于一小时。Amazon Cognito HostedUI 使用有效期为一小时的 Cookie。如果您输入的最短时间不到一个小时,则无法获得较短的过期时间。
访问令牌标头
标头包含两部分信息:密钥 ID (kid
) 和算法 (alg
)。
{ "kid" : "1234example=" "alg" : "RS256", }
kid
-
密钥 ID。它的值表示用于保护令牌的 JSON Web 签名 (JWS) 的密钥。您可以在
jwks_uri
终端节点上查看您的用户池签IDs名密钥。有关
kid
参数的更多信息,请参阅密钥标识符 (kid) 标头参数。 alg
-
Amazon Cognito 用于保护访问令牌的加密算法。用户池使用RS256加密算法,即带有 SHA -256 的RSA签名。
有关
alg
参数的更多信息,请参阅算法(alg)标头参数。
访问令牌默认负载
这是来自访问令牌的示例负载。有关更多信息,请参阅JWT索赔
<header>
. { "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups":[ "testgroup" ], "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "version":2, "client_id":"xxxxxxxxxxxxexample", "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use":"access", "scope":"phone openid profile resourceserver.1/appclient2 email", "auth_time":1676313851, "exp":1676317451, "iat":1676313851, "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "username":"my-test-user" } .<token signature>
sub
-
经过身份验证的用户的唯一标识符 (UUID) 或主题。用户名在您的用户群体中可能不是唯一的。
sub
声明是识别给定用户的最佳方法。 cognito:groups
-
以您的用户为成员的用户群体组的名称数组。
iss
-
发行令牌的身份提供者。声明采用以下格式。
https://cognito-idp.
<Region>
.amazonaws.com/<your user pool ID>
client_id
-
对用户进行身份验证的用户群体应用程序客户端。Amazon Cognito 在 ID 令牌
aud
声明中呈现相同的值。 origin_jti
-
与用户的刷新令牌关联的令牌撤消标识符。Amazon Cognito 在检查您是否通过撤消端点或操作撤销了用户的令牌时会引用该
origin_jti
声明。RevokeTokenAPI当您撤消令牌时,Amazon Cognito 会使所有具有相同origin_jti
值的访问令牌和 ID 令牌失效。 token_use
-
令牌的预期用途。在访问令牌中,其值为
access
。 scope
-
OAuth2.0 范围列表,用于定义令牌提供的访问权限。令牌端点 中的令牌可以包含您的应用程序客户端支持的任何范围。来自亚马逊 Cognito API 登录的令牌仅包含作用域。
aws.cognito.signin.user.admin
auth_time
-
您的用户完成身份验证的身份验证时间,采用 Unix 时间格式。
exp
-
您的用户令牌的过期时间,采用 Unix 时间格式。
iat
-
Amazon Cognito 颁发您的用户令牌的时间,采用 Unix 时间格式。
jti
-
的唯一标识符JWT。
username
-
用户群体中用户的用户名。
访问令牌签名
访问令牌的签名是根据令牌的标头和有效负载计算得出的JWT。在您的 Web 应用程序之外使用时APIs,必须始终在接受令牌之前验证此签名。有关更多信息,请参阅 验证JSON网络令牌。