得られた認可コードをトークンエンドポイントに送りトークンを得るために、以下の ⑤ を 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_token
に ID トークン、access_token
にアクセストークン、refresh_token
にリフレッシュトークンが含まれています。パラメータ間違い以外にエラーになる原因として、認可コードの有効期限切れがあります。サインインして時間が経ってしまっている場合は、サインインからやり直してください。
これで Auth API を使ったサインインの操作は行えました。得られたトークンのうち、id_token
、access_token
を jwt.io のサイトでデコードして、内容を確認します。
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 を追加すれば、利用できるようになります。