概要
サインインを必要とするサービスを作る時に、Cognitoは非常に便利ですよね。
Cognito自体の概要やサインイン・サインアップは他記事にお任せして、今回はCognitoUserPool(以降UserPool)でサインイン後(認証後)にUserPoolから返される、各種トークンについて整理しました。
トークンの種類
UserPoolは認証後、以下のトークンをクライアントに返します。
- IDトークン
- アクセストークン
- 更新トークン
上記3つのトークンはそれぞれ使い方や性質が違います。
IDトークン
- JSONWebToken(JWT)
- 認証したユーザーIDに関するクレームが含まれる。
- リソースサーバーまたはサーバーアプリケーションに対するユーザーの認証に使用できる。
- WebAPIに対してアプリケーション外で使用する場合、IDトークン内でクレームを信頼する前に、IDトークンの署名を確認する必要がある。
- IDトークンは、ユーザーが認証した1時間後に有効期限切れになる。
アクセストークン
- JSONWebToken(JWT)
- UserPoolのユーザーのコンテキストを操作する。
- 対象のCognitoIDに対してアクセストークンを使用して、ユーザー属性を更新、削除が可能。
- アクセストークンは、ユーザーが認証した1時間後に有効期限切れになる。
更新トークン
- 新しいIDトークンまたはアクセストークンを取得するためCognitoに対してのみ使用する。
- デフォルトでは、ユーザーが認証した30日後に有効期限切れになります。(1日~3650日で指定可能)
- 更新トークンを使用して新しいトークンを取得するには、AdminInitiateAuthAPを使用する。
- 更新トークンが正しければ、Cognitoサーバーでトークン更新プロセスが開始され、新しいIDトークンとアクセストークンが返される。
終わり
JWTの概念がかなり多様されています。
次回はJWTの概要と実際にCognitoを利用したサインアップ・サインインフローについてまとめようと思います。