了解用户池 JSON Web 令牌(JWT)
令牌是身份验证的构件,您的应用程序可以将其用作 OIDC 身份验证的证明并请求访问资源。令牌中的声明是有关您的用户的信息。ID 令牌包含有关用户身份的声明,例如他们的用户名、姓氏和电子邮件地址。访问令牌包含类似于 scope 的声明,经过身份验证的用户可以使用它们访问第三方 API、Amazon Cognito 用户自助 API 操作和 userInfo 端点。访问令牌和 ID 令牌均包含 cognito:groups 声明,其中包含用户在用户池中的组成员资格。有关用户池组的更多信息,请参阅 向用户池添加组。
Amazon Cognito 还有刷新令牌,您可以使用它来获取新的令牌或撤销现有令牌。刷新令牌来检索新的 ID 令牌和访问令牌。撤销令牌来撤销刷新令牌允许的用户访问权限。
Amazon Cognito 以 base64urlbase64url 解码为纯文本 JSON。Amazon Cognito 刷新令牌已加密,对用户池用户和管理员不透明,并且只能由您的用户池读取。
使用令牌进行身份验证
当用户登录您的应用程序时,Amazon Cognito 会验证登录信息。如果登录成功,Amazon Cognito 会创建会话并为经过身份验证的用户返回 ID 令牌、访问令牌和刷新令牌。您可以使用这些令牌向您的用户授予对 Amazon API Gateway 等下游资源和 API 的访问权限。或者,您可以用它们交换用于访问其他 Amazon Web Services 服务的临时 Amazon 凭证。
存储令牌
您的应用程序必须能够存储不同大小的令牌。令牌大小变化的原因可能包括但不限于其它声明、编码算法的更改以及加密算法的更改等。当您在用户池中启用令牌吊销时,Amazon Cognito 会向 JSON Web 令牌添加其他声明,从而增加令牌大小。新 origin_jti 和 jti 声明已添加到访问和 ID 令牌中。有关令牌撤销的更多信息,请参阅撤销令牌。
重要
最佳实践是在应用程序环境中保护传输和存储中的所有令牌。令牌可以包含有关用户的个人识别信息,以及有关用于用户池的安全模型的信息。
自定义令牌
您可以自定义 Amazon Cognito 传递给应用程序的访问令牌和 ID 令牌。在 令牌生成前 Lambda 触发器 中,您可以添加、修改和隐藏令牌声明。令牌生成前触发器是一个 Lambda 函数,Amazon Cognito 会向其发送一组默认声明。声明包括 OAuth 2.0 作用域、用户池组成员资格、用户属性等。然后,该函数可以根据这些信息在运行时进行更改,并将更新的令牌声明返回给 Amazon Cognito。
使用版本 2 事件自定义访问令牌需要支付额外费用。有关更多信息,请参阅 Amazon Cognito 定价