了解刷新令牌 - Amazon Cognito

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

了解刷新令牌

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

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

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

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

使用API或托管的用户界面启动刷新令牌的身份验证。

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

注意

要使用 Amazon Cognito 用户池API为托管 UI 用户刷新令牌,请按流程生成InitiateAuth请求。REFRESH_TOKEN_AUTH应用程序中的这种令牌处理方法不会影响用户托管的界面会话。API响应会发出新的 ID 和访问令牌,但不会续订托管的 UI 会话 Cookie。

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

撤消刷新令牌

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

注意

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

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

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

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

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

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

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

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