スキップしてコンテンツを表示

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" エラーが返されます。

このエラーを解決するには、AdminInitiateAuth または InitiateAuth API の呼び出し時に、元のリフレッシュトークンを発行した ID と同じアプリクライアント ID を使用してください。

デバイスの追跡が有効で、未承認デバイスが存在する場合

ユーザープールでデバイスの追跡を有効にしたものの、デバイスが未承認の場合は、新たにトークンの取得を試みると "Invalid Refresh Token" エラーが発生します。

このエラーを解決するには、ConfirmDevice API を呼び出してデバイスを確認してから、デバイスの追跡を開始します。次に、リフレッシュトークンを使用して新しいアクセストークンと ID トークンを取得します。詳細については、「記憶するデバイスを設定する」を参照してください。

認証パラメータにデバイスキーが欠けている場合

ユーザープールでデバイスの追跡を有効にすると、認証が正常に行われた際、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 をそれぞれ実際の値に置き換えてください。

アプリクライアントがクライアントシークレットを使用する場合は、AuthParametersSECRET_HASH パラメータを含めてください。この方法では、リクエストがアプリケーションから送信されたことを確認できます。

デバイスキーが AuthParameters の一部として渡されない場合、 "Invalid Refresh Token" エラーが発生します。このエラーを解決するには、AdminInitiateAuth または InitiateAuth API でデバイスキーを AuthParameters として含める必要があります。

デバイストラッキングは有効ですが、USER_PASSWORD_AUTH 認証フローを使用してください

ユーザープールでデバイストラッキングが有効になっている状態で USER_PASSWORD_AUTH 認証フローを使用すると、アクセストークン、ID トークン、更新トークンを受け取ります。ただし、更新トークンを使用して新しいトークンを取得しようとすると、"Invalid Refresh Token" というエラーが表示されます。USER_PASSWORD_AUTH フローは、デバイスの追跡が有効な場合のトークンの更新をサポートしていません。

このエラーを解決するには、USER_SRP_AUTH 認証フローを使用してからトークンを更新します。

関連情報

更新トークン

Amazon Cognito ユーザープールによる認証

アプリクライアントにおけるアプリケーション固有の設定

Amazon Cognito のユーザープールでデバイスを追跡、記憶する

AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ