了解用户池 JSON Web 令牌 (JWTs) - Amazon Cognito

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

了解用户池 JSON Web 令牌 (JWTs)

令牌对用户进行身份验证并授予对资源的访问权限。令牌中的声明是有关您的用户的信息。ID 令牌包含有关用户身份的声明,例如他们的用户名、姓氏和电子邮件地址。访问令牌包含诸如经过身份验证scope的用户可用于访问第三方APIs、Amazon Cognito 用户自助服务API操作和. userInfo 端点 访问令牌和 ID 令牌均包含 cognito:groups 声明,其中包含用户在用户群体中的组成员资格。有关用户群体组的更多信息,请参阅 向用户池添加组

Amazon Cognito 还有刷新令牌,您可以使用它来获取新的令牌或撤销现有令牌。刷新令牌来检索新的 ID 令牌和访问令牌。撤消令牌来撤消刷新令牌允许的用户访问权限。

Amazon Cognito 以 Base64 编码字符串的形式发布令牌。你可以将任何亚马逊 Cognito ID 或访问令牌从 base64 解码为纯文本。JSONAmazon Cognito 刷新令牌已加密,对用户群体用户和管理员不透明,并且只能由您的用户群体读取。

使用令牌进行身份验证

当用户登录您的应用程序时,Amazon Cognito 会验证登录信息。如果登录成功,Amazon Cognito 会创建会话并为经过身份验证的用户返回 ID 令牌、访问令牌和刷新令牌。您可以使用这些令牌向您的用户授予对下游资源的访问权限,APIs例如 Amazon API Gateway。或者,您可以用它们交换用于访问其他 AWS 服务的临时 AWS 凭证。

身份验证概述
存储令牌

您的应用程序必须能够存储不同大小的令牌。令牌大小变化的原因可能包括但不限于其它声明、编码算法的更改以及加密算法的更改等。当您在用户池中启用令牌撤销时,Amazon Cognito 会JSON向网络令牌添加其他声明,从而增加其大小。新 origin_jtijti 声明已添加到访问和 ID 令牌中。有关令牌撤消的更多信息,请参阅撤消令牌

重要

最佳实践是在应用程序环境中保护传输和存储中的所有令牌。令牌可以包含有关用户的个人识别信息,以及有关用于用户池的安全模型的信息。

自定义令牌

您可以自定义 Amazon Cognito 传递给应用程序的访问令牌和 ID 令牌。在 令牌生成前 Lambda 触发器 中,您可以添加、修改和隐藏令牌声明。令牌生成前触发器是一个 Lambda 函数,Amazon Cognito 会向其发送一组默认声明。声明包括 OAuth 2.0 范围、用户池群组成员资格、用户属性等。然后,该函数可以根据这些信息在运行时进行更改,并将更新的令牌声明返回给 Amazon Cognito。

使用版本 2 事件自定义访问令牌需要支付额外费用。有关更多信息,请参阅 Amazon Cognito 定价