⛄
aws cliを用いてcognitoのAccessTokenを取得する方法
必要な変数
- USER_POOL_ID
- CLIENT_ID
- EMAIL (ユーザのメールアドレス)
- PASSWORD (ユーザのパスワード)
通常の場合
TOKEN=$(aws cognito-idp admin-initiate-auth \
--user-pool-id ${USER_POOL_ID} \
--client-id ${CLIENT_ID} \
--auth-flow ADMIN_NO_SRP_AUTH \
--auth-parameters "USERNAME=${EMAIL},PASSWORD=${PASSWORD}" \
--query "AuthenticationResult.AccessToken" | sed "s/\"//g")
echo ${TOKEN}
MFAが有効になっている場合
上記の変数に加え USER_SUB
が追加で必要になる。
SESSION=$(aws cognito-idp admin-initiate-auth \
--user-pool-id ${USER_POOL_ID} \
--client-id ${CLIENT_ID} \
--auth-flow ADMIN_NO_SRP_AUTH \
--auth-parameters "USERNAME=${EMAIL},PASSWORD=${PASSWORD}" \
--query "Session" | sed "s/\"//g")
# Note: このタイミングでSMSが送られる。送られない場合はSNSの上限に達した可能性がある。
# コードの入力
echo -n Input Code:
read code
echo code is ${code}
TOKEN=$(aws cognito-idp respond-to-auth-challenge \
--client-id ${CLIENT_ID} \
--challenge-name SMS_MFA \
--challenge-responses \
"USERNAME=${USER_SUB},SMS_MFA_CODE=${code}" \
--session ${SESSION} \
--query "AuthenticationResult.AccessToken" | sed "s/\"//g")
echo ${TOKEN}
Discussion