5. Postman で トークンエンドポイント

得られた認可コードをトークンエンドポイントに送りトークンを得るために、以下の ⑤ を Postman で行います。

⑤ トークンエンドポイントに認可コードを送る

サーバサイドアプリケーションの代わりに、Postman でトークンエンドポイントに認可コードを送ります。

をクリックして、新しいタブを開きます。

HTTP メソッドのドロップダウンリストから [POST] を選択して、以下の URL の < > 部分を書き換え入力します。<domain-name> は Cognito に割り当てたドメイン名に置き換えます。

https://<domain-name>.auth.ap-northeast-1.amazoncognito.com/token

リクエスト部のタブ [Auth] をクリックして、[Type] に [Basic Auth] を選択し、[Username] に 2 章で作成した Cognito のアプリクライアントの1つ Confidential クライアントのアプリクライアント ID を入力します。[Password] には、アプリクライアント シークレットを入力します。

リクエスト部のタブ [Body] をクリックして、入力形式を指定するドロップダウンリストから [x-www-form-urlencoded] を選択し、以下の 4 つを入力します。

ヘッダ項目
grant_type authorization_code
client_id Confidential クライアントのアプリクライアント ID
redirect_uri http://localhost/
code ブラウザのアドレスバーからコピーした認可コード

[Send] をクリックして、API をリクエストします。

API の呼び出し結果が表示されます。成功していると、複数の種類のトークンが含まれた JSON が返ってきています。id_tokenID トークンaccess_tokenアクセストークンrefresh_tokenリフレッシュトークンが含まれています。パラメータ間違い以外にエラーになる原因として、認可コードの有効期限切れがあります。サインインして時間が経ってしまっている場合は、サインインからやり直してください。

これで Auth API を使ったサインインの操作は行えました。得られたトークンのうち、id_tokenaccess_token jwt.io のサイトでデコードして、内容を確認します。

ID トークン確認

ID トークンの内容を確認します。トークンエンドポイントの呼び出し結果から id_token の値をコピーします。” は含めず、” と “ に囲まれた文字列をコピーします。

https://jwt.io/ をブラウザで開いてください。以下のような入力画面が表示されるまで、下にスクロールしてください。最初はサンプルが入力されています。

[Encoded] にコピーした id_token の値を貼り付けます。[Decoded] の [PAYLOAD] にトークンの中身が表示されます。

アクセストークン確認

トークンエンドポイントの呼び出し結果から access_token の値をコピーします。こちらも “ は含めず、” と “ に囲まれた文字列をコピーします。

https://jwt.io/ で、[Encoded] にコピーした access_token の値を貼り付けます。[Decoded] の [PAYLOAD] にトークンの中身が表示されます。

理解を深めるために、以下も試してみてください。

得られたトークンは 3. Cognito Identity Provider API の REST API アクセスでも利用できます。
一度 1-4. 認可エンドポイント を実施した後に、ブラウザを閉じずにもう一度認可エンドポイントを開くと、サインインせずにすぐにコールバック URL へリダイレクトされます。
コールバック URL を変更して、認可エンドポイントを開くとエラーになります。アプリクライアントのコールバック URL 設定に ";" 区切りで URL を追加すれば、利用できるようになります。