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

使用刷新令牌

您可以使用刷新令牌来检索新的 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 分钟。

注意

Mobile SDK for Android 提供的选项可将 ID 令牌和访问令牌的最短有效期更改为 0 到 30 分钟之间的值。请参阅 Amazon Mobile SDK for Android API 引用中 CognitoIdentityProviderClientConfigsetRefreshThreshold()方法。

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

启动新的刷新令牌 (API)

请使用 API 或 HostedUI 来启动刷新令牌的身份验证。

要结合使用刷新令牌与用户池 API 获取新的 ID 令牌和访问令牌,请使用 AdminInitiateAuthInitiateAuth API 操作。为AuthFlow参数传递 REFRESH_TOKEN_AUTH。授权参数 AuthParameters 是密钥-值映射,其中密钥为 "REFRESH_TOKEN",值为实际刷新令牌。在您的 API 请求通过所有质询后,Amazon Cognito 会返回新的 ID 和访问令牌。

注意

要更改使用托管 UI 登录的用户的令牌,请使用 InitiateAuth API 操作。

撤消刷新令牌

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

注意

撤消刷新令牌会撤消所有用刷新令牌发布的令牌。

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

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

  • 用户的访问令牌无法用于用户池服务。

  • 用户必须重新进行身份验证以获取新的令牌。会话 Cookie 不会自动过期。作为最佳实践,应用程序应将用户重新导向到注销端点,以强制浏览器清除会话 Cookie。

应用程序可以使用 GlobalSignOut API 来允许单个用户自行从所有设备注销。通常,应用程序会将此选项显示为一个选择,例如 Sign out from all devices(从所有设备注销)。该应用程序必须使用用户未过期、未撤消的有效访问令牌调用此 API 操作。此操作无法用于允许一个用户注销另一个用户。

应用程序可以使用 AdminUserGlobalSignOut API 来允许管理员将一个用户从所有设备注销。管理员应用程序必须通过 Amazon 开发人员凭证调用此 API 操作,并传递用户池 ID 和用户的用户名作为参数。AdminUserGlobalSignOut API 可以在用户池中注销任何用户。