Amazon Cognito ユーザープール API から返される「無効な更新トークン」エラーのトラブルシューティング方法に関する情報が必要です。
簡単な説明
Amazon Cognito ユーザープールによって発行された更新トークンは、新しいアクセストークンと ID トークンを取得するために使用されます。更新トークンを使用して新しいアクセスと ID トークンをリクエストすると、次の理由により「更新トークンが無効です」というエラーが表示されて失敗することがあります。
- 更新トークンを発行したアプリクライアント ID とは異なるアプリクライアント ID を使用している。
- デバイストラッキングがオンになっているが、ConfirmDevice API でデバイスが確認されていない。
- デバイストラッキングがオンになっていて、AdminInitiateAuth または InitiateAuth API の AuthParameters としてデバイスキーを渡していない。
- デバイストラッキングがオンになり、USER_PASSWORD_AUTH 認証フローを使用して更新トークンを取得した。
解決策
更新トークンを発行したアプリクライアント ID とは異なるアプリクライアント ID を使用している
ユーザーが AdminInitiateAuth API、InitiateAuth API、またはホスト UI を使用して認証する場合、アプリクライアント ID が ClientId パラメータとして使用されます。AdminInitiateAuth または InitiateAuth API を使用してトークンを更新するには、同じアプリクライアント ID を使用する必要があります。
別のアプリクライアント ID を使用すると、トークンを更新する API が「無効な更新トークン」エラーで失敗します。
デバイストラッキングがオンになっているが、ConfirmDevice API でデバイスが確認されていない
ユーザープールのデバイストラッキングがオンになっている場合は、ConfirmDevice API を呼び出してデバイスを確認し、デバイストラッキングを開始する必要があります。デバイスを確認したら、更新トークンを使用して新しいアクセストークンと ID トークンを取得できます。
詳細については、「Amazon Cognito ユーザープールで記憶しているデバイスを使用するにはどうすればよいですか?」を参照してください。
デバイスを確認せずに AdminInitiateAuth または InitiateAuth API を呼び出して新しいトークンを取得すると、「無効な更新トークン」というエラーが表示されます。
デバイストラッキングがオンになっていて、AdminInitiateAuth または InitiateAuth API の AuthParameters としてデバイスキーを渡していない。
ユーザープールのデバイストラッキングを有効にすると、認証に成功した後に固有のデバイスキーが返されます。更新トークンを使用して新しいトークンを取得しようとする場合、AdminInitiateAuth API または InitiateAuth API でデバイスキーを AuthParameters として渡す必要があります。
注: example_refresh_token、example_secret_hash、example_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 の 1 つです。
デバイスキーが AuthParameters の 1 つとして渡されない場合、「無効な更新トークン」というエラーが表示されます。
デバイストラッキングがオンになり、USER_PASSWORD_AUTH 認証フローを使用して更新トークンを取得した
ユーザープールのデバイストラッキング機能は、USER_SRP_AUTH 認証フローでのみ使用できます。AdminInitiateAuth API、InitiateAuth API、またはホストされた UI を使用する初期認証には、USER_SRP_AUTH フローを使用する必要があります。
USER_PASSWORD_AUTH 認証フローを使用すると、アクセストークン、ID トークン、および更新トークンを受け取ります。ただし、更新トークンを使用して新しいトークンを取得しようとすると、「無効な更新トークン」というエラーが表示されます。