跳至内容

为什么我在 Cognito 用户池 API 中收到“Invalid Refresh Token”错误?

1 分钟阅读
0

我想对 Amazon Cognito 用户池 API 中的“Invalid Refresh Token”错误进行故障排除。

解决方法

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

当用户使用 AdminInitiateAuth API、InitiateAuth API 或托管 UI 验证身份时,应用程序客户端 ID 将用作 ClientId 参数。如果您使用的应用程序客户端 ID 与发布刷新令牌的应用程序客户端 ID 不同,则 API 会返回“Invalid Refresh Token”错误。

要解决此错误,请使用在调用 AdminInitiateAuthInitiateAuth API 时发出原始刷新令牌的相同应用程序客户端 ID。

您有一台未经确认的设备开启了设备跟踪功能

如果您为用户池开启设备跟踪但未确认设备,则在尝试获取新令牌时会收到“Invalid Refresh Token”错误。

要解决此错误,请调用 ConfirmDevice API 来确认设备并开始设备跟踪。然后,使用刷新令牌获取新的访问权限和 ID 令牌。有关详细信息,请参阅 Setting up remembered devices(设置记住的设备)

您的身份验证参数中缺少设备密钥

当您为用户池开启设备跟踪时,Amazon Cognito 会在成功进行身份验证后返回唯一的设备密钥。要使用刷新令牌获取新令牌,请在以下身份验证请求中包含设备密钥:

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

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

如果您的应用程序客户端使用客户端密钥,请在 AuthParameters 中包含 SECRET_HASH 参数。这将验证请求是否来自您的应用程序。

如果设备密钥未作为一个 AuthParameters 传递,则会收到“Invalid Refresh Token”错误。要解决该错误,请确保将设备密钥作为 AuthParameters 包括在 AdminInitiateAuthInitiateAuth API 中。

您开启了设备跟踪,但您的刷新令牌有身份验证流程

当您开启设备跟踪时,USER_PASSWORD_AUTH 流程不支持令牌刷新。用户池设备跟踪功能只能配合 USER_SRP_AUTH 身份验证流程使用。

如果您在使用刷新令牌时尝试获取新令牌,则会收到“Invalid Refresh Token”错误。要解决此错误,请跟踪您的用户设备,然后使用 USER_SRP_AUTH 身份验证流程。

相关信息

刷新令牌

使用 Amazon Cognito 用户池进行身份验证

应用程序客户端的应用程序特定设置

Tracking and remembering devices using Amazon Cognito Your User Pools(使用 Amazon Cognito 您的用户池跟踪和记住设备)

AWS 官方已更新 5 个月前