Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
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ヶ月前
