確認まで行ったユーザで IntiateAuth を使ってユーザ認証を行います。
ターミナルや Powershell で以下の内容を < >
部分を書き換えて入力して実行します。<app-client-id>
は 2 章で作成した Cognito アプリクライアントの ID です。Public クライアントを使用します。<mail-address>
、<password>
には先程登録したユーザ情報を入力してください。
curl --location \
--request POST 'https://cognito-idp.ap-northeast-1.amazonaws.com/' \
--header 'Content-Type: application/x-amz-json-1.1' \
--header 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
--data-raw '
{
"ClientId": "<app-client-id>",
"AuthFlow": "USER_PASSWORD_AUTH",
"AuthParameters":
{
"USERNAME": "<mail-address>",
"PASSWORD": "<password>"
}
}
'
C:\Windows\System32\curl.exe --location `
--request POST 'https://cognito-idp.ap-northeast-1.amazonaws.com/' `
--header 'Content-Type: application/x-amz-json-1.1' `
--header 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' `
--data-raw @'
{
\"ClientId\": \"<app-client-id>\",
\"AuthFlow\": \"USER_PASSWORD_AUTH\",
\"AuthParameters\":
{
\"USERNAME\": \"<mail-address>\",
\"PASSWORD\": \"<password>\"
}
}
'@
成功した場合の出力を整形すると以下のような内容となっています。
{
"AuthenticationResult": {
"AccessToken": "?????.?????.?????",
"ExpiresIn": 3600,
"IdToken": "?????.?????.?????",
"RefreshToken": "?????????????????",
"TokenType": "Bearer"
},
"ChallengeParameters": {}
}
アクセストークンの内容を確認します。InitiateAuth の呼び出し結果から AccessToken
の値をコピーします。” は含めず、” と “ に囲まれた文字列をコピーします。
https://jwt.io/ をブラウザで開いてください。
以下のような入力画面が表示されるまで、下にスクロールしてください。最初はサンプルが入力されています。
[Encoded] にコピーした AccessToken
の値を貼り付けます。[Decoded] の [PAYLOAD] にトークンの中身が表示されます。[username] は Cognito 上のユーザ名です。今回はユーザからはメールアドレスをユーザ名のように扱う前提で、ユーザ名を指定していないため、ランダムな文字列が生成されて割り当てられています。ユーザにとってユーザ名であるメールアドレスはアクセストークンに含まれていません。また、 [Encoded] にある貼り付けた文字列が 3 色で塗り分けられており、[Decoded] のどこの部分かを表しています。
InitiateAuth の呼び出し結果から IdToken
の値をコピーします。こちらも “ は含めず、” と “ に囲まれた文字列をコピーします。
https://jwt.io/ で、[Encoded] にコピーした IdToken
の値を貼り付けます。[Decoded] の [PAYLOAD] にトークンの中身が表示されます。アクセストークンと同じ内容も含まれていますが、いくつか異なっており、特にメールアドレスなどユーザの属性が含まれています。