Global outage event
If you’re experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
AWS CLI を使用して Amazon Cognito の JWT トークンを取り消すにはどうすればよいですか?
Amazon Cognito ユーザープールで発行された JSON Web Token (JWT) トークンを取り消したいと考えています。
簡単な説明
Amazon Cognito 更新トークンは、ユーザーがユーザープールにサインインしてから 30 日後に失効します。アプリケーションクライアントの更新トークンの有効期限は 60 分から 10 年の間で設定できます。詳細については、「更新トークンの使用」を参照してください。
更新トークンをリアルタイムで取り消すこともできます。そうすることで更新トークンが追加のアクセストークンを生成できないようになります。更新トークンによって以前に発行されたアクセストークンはすべて無効です。
更新トークンを取り消しても、並列ユーザーセッションに関連する他の更新トークンには影響しません。
解決方法
JWT トークンを取り消すには、アプリクライアントに基づいて関連する手順を参照してください。
注意:
- AWS Command Line Interface (AWS CLI) コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用すしているか確認してください。
- Amazon Cognito ユーザープールのアプリケーションクライアントは、アプリケーションのシークレットをオプションで持つことができます。詳細については、ユーザープールのアプリクライアントの設定を参照してください。
- us-east-1 を AWS リージョンに、user-pool-id、client-id、username、email、tokens、secret、および password をお客様の変数に置き換えます。
シークレットのないアプリケーションクライアント
AWS CLI コマンド admin-initiate-auth を実行して、管理者として認証フローを開始し、ID、アクセストークン、および更新トークンを取得します。
$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password --auth-flow ADMIN_NO_SRP_AUTH
次のような出力が表示されます。
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "ey.._9Dg", "IdToken": "ey..DU-Q" } }
AWS CLI コマンド revoke-token を実行して、次のような更新トークンを取り消します。
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJra....
注: 受け取る出力はありません。
新しいアクセストークンと ID を取得するために、同じ更新トークンを使用してテストします。
$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJra....tw --auth-flow REFRESH_TOKEN_AUTH
次のように、更新トークンが取り消されたという出力が表示されます。
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
シークレットを持つアプリケーションクライアント
指示に従って、Python スクリプトを使用して SecretHash 値を作成します。
AWS CLI コマンド admin-initiate-auth を実行して、管理者として認証フローを開始します。これで ID、アクセストークン、および更新トークンがわかります。このコマンドは次のようになります。
$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters USERNAME=user-name,PASSWORD=your-password,SECRET_HASH=IkVyH...= --auth-flow ADMIN_NO_SRP_AUTH
次のような出力が表示されます。
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "eyJra....", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "eyJjd....", "IdToken": "ey..YQSA" } }
AWS CLI コマンド revoke-token を実行して、更新トークンを取り消します。
$ aws --region us-east-1 cognito-idp revoke-token --client-id your-client-id --token eyJjd... --client-secret 1n00....
同じ更新トークンを使用してテストを実行し、更新アクセストークンと ID を取得できるかどうかを確認します。
$ aws --region us-east-1 cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id your-client-id --auth-parameters REFRESH_TOKEN=eyJjdH.... --auth-flow REFRESH_TOKEN_AUTH
更新トークンが取り消されたという出力が表示されます。
Error: An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Refresh Token has been revoked
新しく追加されたクレーム
2 つの新しいクレーム origin_jti と jti がアクセストークンと ID トークンに追加されます。その結果、アプリクライアント内のトークンのサイズが増加します。
jti クレームは、JWT の一意の識別子を提供します。同じ値を別のデータオブジェクトに割り当てることができないよう、識別子の値を割り当てる必要があります。アプリクライアントが複数の発行者を使用している場合は、異なる値を使用して衝突を防止します。
注意: jti クレームはオプションです。詳細については、インターネット技術タスクフォース (IETF) のウェブサイトの RFC 7519) を参照してください。
関連情報
- 言語
- 日本語

関連するコンテンツ
- 質問済み 8ヶ月前
