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

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

使用刷新令牌

您可以使用刷新令牌来检索新的 ID 令牌和访问令牌。默认情况下,刷新令牌会在您的应用程序用户登录用户池的 30 天后过期。当您为用户池创建应用程序时,您可以将应用程序的刷新令牌到期时间设置为介于 60 分钟和 10 年之间的任何值。

如果存在有效的(未过期)刷新令牌,则 Mobile SDK for iOS、Mobile SDK for Android、Amplify for iOS、Android 和 Flutter 会自动刷新您的 ID 和访问令牌。ID 和访问令牌的剩余有效期至少为 2 分钟。如果刷新令牌已过期,您的应用程序用户必须通过再次登录用户池来重新进行身份验证。如果访问令牌和 ID 令牌的最小值设置为 5 分钟,并且您正在使用 SDK,则刷新令牌将持续用于检索新访问和 ID 令牌。您会看到预期行为的最小值设置为 7 分钟,而不是 5 分钟。

只要用户在针对新账户的 UnusedAccountValidityDays 时间限制之前至少登录一次,用户账户本身就不会过期。

使用刷新令牌获取新的访问权限和身份令牌

使用 API 或托管 UI 来启动刷新令牌的身份验证。

要使用刷新令牌通过用户池 API 获取新 ID 和访问令牌,请使用AdminInitiateAuthInitiateAuthAPI 操作。为 AuthFlow 参数传递 REFRESH_TOKEN_AUTH。在 AuthFlowAuthParameters 属性中,将用户的刷新令牌作为 "REFRESH_TOKEN" 的值进行传递。在您的 API 请求通过所有质询后,Amazon Cognito 会返回新的 ID 和访问令牌。

注意

要使用 Amazon Cognito 用户群体 API 刷新托管 UI 用户的令牌,请生成 InitiateAuth 请求。

您也可以将刷新令牌提交给用户群体中您在其中配置了域的令牌端点。在请求正文中,加入 refresh_tokengrant_type 值和用户刷新令牌的 refresh_token 值。

撤消刷新令牌

您可以撤销属于用户的刷新令牌。有关撤消令牌的更多信息,请参阅撤消令牌

注意

撤消刷新令牌将撤消 Amazon Cognito 从具有该令牌的刷新请求中发出的所有 ID 和访问令牌。

当您使用 GlobalSignOutAdminUserGlobalSignOut API 操作撤消用户的所有令牌时,用户可以从他们当前登录的所有设备中注销。注销用户后,会发生以下影响。

  • 用户的刷新令牌无法获取该用户的新令牌。

  • 用户的访问令牌无法发出经过令牌授权的 API 请求。

  • 用户必须重新进行身份验证以获取新的令牌。由于托管 UI 会话 Cookie 不会自动过期,因此,用户可以使用会话 Cookie 重新进行身份验证,而无需额外提示输入凭证。注销托管 UI 用户后,将这些用户重定向到注销端点,Amazon Cognito 将在其中清除用户的会话 cookie。

使用刷新令牌,您可以将用户的会话长时间保留在您的应用程序中。随着时间推移,您的用户可能希望取消对他们已登录的某些设备的授权,从而不断刷新他们的会话。要将您的用户从单个设备注销,请撤消其刷新令牌。当您的用户想要退出所有经过身份验证的会话时,请生成 GlobalSignOutAPI 请求。应用程序可以为用户提供一个选择,如从所有设备注销GlobalSignOut 接受用户的有效(即未更改、未过期、未撤消的)访问令牌。由于此 API 经过令牌授权,因此一个用户无法使用它来发起另一个用户的注销。

但是,您可以生成一个 AdminUserGlobalSignOutAPI 请求,该请求由您使用您的 Amazon 凭据进行授权,以便将任何用户从其所有设备上注销。管理员应用程序必须使用 Amazon 开发者凭据调用此 API 操作,并将用户池 ID 和用户名作为参数传递。AdminUserGlobalSignOut API 可以在用户池中注销任何用户。

有关您可以使用 Amazon 凭证或用户访问令牌授权的请求的更多信息,请参阅Amazon Cognito 用户池经过身份验证和未经身份验证的 API 操作