如何排查 Amazon Cognito 用户群体 API 中的“刷新令牌无效”错误?

1 分钟阅读
0

我需要有关如何排查 Amazon Cognito 用户群体 API 返回的“刷新令牌无效”错误的信息。

简短描述

由 Amazon Cognito 用户群体发放的刷新令牌用于检索新的访问权限和 ID 令牌。使用刷新令牌请求新的访问权限和 ID 令牌失败,且出现“刷新令牌无效”错误,可能的原因如下:

  • 您使用与发放刷新令牌不同的应用程序客户端 ID。
  • 设备跟踪已开启,且设备未通过 ConfirmDevice API 确认。
  • 设备跟踪已开启,且您没有在 AdminInitiateAuthInitiateAuth API 中将设备密钥作为 AuthParameters 传递。
  • 设备跟踪已开启,且您使用 USER_PASSWORD_AUTH 身份验证流程获取刷新令牌。

解决方法

您使用与发放刷新令牌不同的应用程序客户端 ID

当用户使用 AdminInitiateAuth API、InitiateAuth API 或托管 UI 验证身份时,应用程序客户端 ID 将用作 ClientId 参数。您必须使用相同的应用程序客户端 ID,才能使用 AdminInitiateAuth 或 InitiateAuth API 刷新令牌。

如果您使用不同的应用程序客户端 ID,则刷新令牌的 API 会失败,并出现“刷新令牌无效”错误。

设备跟踪已开启,且设备未通过 ConfirmDevice API 确认

为用户群体开启设备跟踪时,您必须调用 ConfirmDevice API,以确认设备并开始设备跟踪。确认设备后,您可以使用刷新令牌,获取新的访问权限和 ID 令牌。

有关更多信息,请参阅如何在 Amazon Cognito 用户群体中使用记住的设备?

如果未确认设备,且调用 AdminInitiateAuthInitiateAuth API 获取新令牌,则会收到“刷新令牌无效”错误。

设备跟踪已开启,且您没有在 AdminInitiateAuth 或 InitiateAuth API 中将设备密钥作为 AuthParameters 传递

为用户群体开启设备跟踪时,身份验证成功后会返回唯一的设备密钥。您尝试使用刷新令牌获取新令牌时,必须在 AdminInitiateAuthInitiateAuth API 中将设备密钥作为 AuthParameters 传递。

**注意:**将 example_refresh_tokenexample_secret_hashexample_device_key 替换为自己的值。

{
  "AuthFlow": "REFRESH_TOKEN_AUTH",
  "AuthParameters": {
    "REFRESH_TOKEN": "example_refresh_token",
    "SECRET_HASH": "example_secret_hash",  
    "DEVICE_KEY": "example_device_key"
  }
}

为应用程序客户端配置客户端密钥时,SECRET_HASH 是一个必需的 AuthParameters

如果设备密钥未作为一个 AuthParameters 传递,则会收到“刷新令牌无效”错误。

设备跟踪已开启,且您使用 USER_PASSWORD_AUTH 身份验证流程获取刷新令牌

用户群体的设备跟踪功能只能配合 USER_SRP_AUTH 身份验证流程使用。使用 AdminInitiateAuth API、InitiateAuth API 或托管 UI 的初始身份验证必须使用 USER_SRP_AUTH 流程。

使用 USER_PASSWORD_AUTH 身份验证流程时,您将获取访问权限、ID 和刷新令牌。但是,尝试使用刷新令牌获取新令牌时,您会收到“刷新令牌无效”错误。


AWS 官方
AWS 官方已更新 1 年前