はじめに
何かとサーバレス構成の認証でよく利用するCognitoで、MFAを有効化したCognitoユーザープールよりCLIでToken取得をしてみました。
目次
手順の概要
基本的には下記の認証フロー通りに実施するだけです。
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html
一番上の図を参照
- ClientからInitiate Authの実行
- 返却されたSession情報を受信
- MFAコードを受信 (今回はSMSを設定)
- AuthChallengeへ応答
- MFAコードの送信
- 目的のToken受信
手順
Cognito アプリクライントの設定
アプリベースの認証でユーザー名とパスワードの (SRP を使用しない) フローを有効にする (USER_PASSWORD_AUTH)
ClientからInitiate Authの実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ aws cognito-idp initiate-auth \ > --auth-flow USER_PASSWORD_AUTH \ > --client-id ***Cognito設定にて確認できるアプリクライントID \ > --auth-parameters \ > USERNAME=[Cognito上に作成したユーザID],PASSWORD=[Cognito上に作成したユーザPW] 下記レスポンス { "ChallengeName": "SMS_MFA", "Session": "[次のリクエストで利用するためのSession情報]", "ChallengeParameters": { "CODE_DELIVERY_DELIVERY_MEDIUM": "SMS", "CODE_DELIVERY_DESTINATION": "+***MFA通知先電話番号", "USER_ID_FOR_SRP": "***ユーザ名が表示される" } } |
※Profileを利用している場合、パラメータに --profile *** として指定
AuthChallengeへ応答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ aws cognito-idp respond-to-auth-challenge \ > --client-id ***Cognito設定にて確認できるアプリクライントID \ > --challenge-name SMS_MFA \ > --challenge-responses \ > USERNAME=[Cognito上に作成したユーザID],SMS_MFA_CODE=[SMSに通知されたCode]] \ > --session "[上記レスポンスでSessionとして返却された内容を入れ込む]" 下記レスポンス { "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "***アクセストークンが表示される", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "***リフレッシュトークンが表示される", "IdToken": "***Idトークンが表示される", "NewDeviceMetadata": { "DeviceKey": "ap-northeast-1_***", "DeviceGroupKey": "***" } } } |
※Profileを利用している場合、パラメータに --profile *** として指定
結果確認
https://jwt.io 等でTokenがDecode出来る事を確認できました。
投稿者プロフィール
-
Japan AWS Ambassadors 2023, 2024
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております
機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。
最新の投稿
Amazon Q2025年6月11日Amazon Q Developer CLI でMCPサーバ起動に失敗したのでトラブルシュートしてもらった
AWS2025年2月25日WebスクレイピングにAmazon CloudWatch Synthetics CanaryとBedrockを利用する
AWS re:Invent 20242025年1月1日AWS re:Invent 2024から読み解く、次世代クラウドコンピューティングの潮流
AWS re:Invent 20242024年12月7日Bedrock Flows と Amazon Q Developer Agentの新機能で生成AIアプリを短時間で作成する