Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated Mar 26, 2026

トークンと認証情報

Amplify Authは、基盤となるAmazon Cognito ユーザープールとOpenID Connect(OIDC)プロバイダーとしてやり取りします。ユーザーが正常に認証されると、OIDC準拠のJSON Web Token(JWT)を受け取ります。これらのトークンはユーザーを_識別_し、リソースに_アクセス_するために使用されます。

アクセストークンは、トークンのベアラー(つまりCognitoユーザー)がリソースに対するアクションを実行する権限があるかどうかを確認するために使用されます。以下はCognitoによって発行されたアクセストークンのペイロード例です:

{
"sub": "54288468-e051-706d-a73f-03892273d7e9",
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_yoKn9s4Tq",
"client_id": "1sg675g08g6g0e9f64grv9n5sk",
"origin_jti": "0eadb994-a6e0-419e-b309-a7a0d522d72f",
"event_id": "b180897a-181c-4f73-94bb-a2946e8b4ef1",
"token_use": "access",
"scope": "aws.cognito.signin.user.admin",
"auth_time": 1714241873,
"exp": 1714245473,
"iat": 1714241873,
"jti": "57f10a4d-a1f2-453b-8672-d1cfa8187047",
"username": "54288468-e051-706d-a73f-03892273d7e9"
}

IDトークンは、フロントエンドアプリケーション内でのみ使用することを目的としています。このトークンには個人識別情報(PII)が含まれており、リソースに対するアクセスを認可するために使用すべきではありません。以下は、デフォルトのAmplify Authの設定でメールとパスワード認証を使用したIDトークンの例です。

{
"sub": "54288468-e051-706d-a73f-03892273d7e9",
"email_verified": true,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_yoKn9s4Tq",
"cognito:username": "54288468-e051-706d-a73f-03892273d7e9",
"origin_jti": "0eadb994-a6e0-419e-b309-a7a0d522d72f",
"aud": "1sg675g08g6g0e9f64grv9n5sk",
"event_id": "b180897a-181c-4f73-94bb-a2946e8b4ef1",
"token_use": "id",
"auth_time": 1714241873,
"exp": 1714245473,
"iat": 1714241873,
"jti": "bb69af10-3ce0-47c2-8d8d-5bdc8630ab58",
"email": "hello@mycompany.com"
}

Amplify Authに追加のユーザー属性が指定されている場合、それらの値はIDトークンに含まれます。例えば、nickname属性がリクエストされた場合、IDトークンでnicknameクレームとして利用可能になります:

{
"sub": "54288468-e051-706d-a73f-03892273d7e9",
"email_verified": true,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_yoKn9s4Tq",
"cognito:username": "54288468-e051-706d-a73f-03892273d7e9",
"origin_jti": "0eadb994-a6e0-419e-b309-a7a0d522d72f",
"aud": "1sg675g08g6g0e9f64grv9n5sk",
"event_id": "b180897a-181c-4f73-94bb-a2946e8b4ef1",
"token_use": "id",
"auth_time": 1714241873,
+ "nickname": "hello",
"exp": 1714245473,
"iat": 1714241873,
"jti": "bb69af10-3ce0-47c2-8d8d-5bdc8630ab58",
"email": "hello@mycompany.com"
}

一方、ユーザープールグループクレームはアクセストークンとIDトークンの両方にcognito:groupsクレームで含まれます:

{
"sub": "54288468-e051-706d-a73f-03892273d7e9",
"email_verified": true,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_yoKn9s4Tq",
"cognito:username": "54288468-e051-706d-a73f-03892273d7e9",
"cognito:groups": ["ADMINS"],
"origin_jti": "0eadb994-a6e0-419e-b309-a7a0d522d72f",
"aud": "1sg675g08g6g0e9f64grv9n5sk",
"event_id": "b180897a-181c-4f73-94bb-a2946e8b4ef1",
"token_use": "id",
"auth_time": 1714241873,
"nickname": "hello",
"exp": 1714245473,
"iat": 1714241873,
"jti": "bb69af10-3ce0-47c2-8d8d-5bdc8630ab58",
"email": "hello@mycompany.com"
}

Cognitoユーザープールでトークンを使用することに関するAWSドキュメントにアクセスして、トークン、Cognitoでの使用方法、および意図された用途についてさらに詳しく学習してください。

トークン管理オプションについて

トークンキーはセキュリティ強化のために自動的にローテーションされますが、保存方法をカスタマイズしたり、リフレッシュレートと有効期限をカスタマイズしたり、サインアウト時にトークンを取り消したりできます。

トークン保存メカニズムの更新

トークンがアプリケーション内で永続化される場所と方法を選択するために、ストレージメカニズムを更新できます。デフォルトオプションはlocalStorageです。さらに、sessionStoragesharedInMemoryStorage、またはCookieStorageオプションもインポートできます。

独自のメカニズムをカスタマイズする場合は、KeyValueStorageInterfaceインターフェースをインポートして独自のクラスに実装できます。

ブラウザローカルストレージ

Amplifyでは、localStorageがデフォルトのストレージメカニズムです。ブラウザのlocalStorageにトークンを保存します。このローカルストレージはブラウザセッションとタブ全体で永続化されます。以下を呼び出すことで、このストレージに明示的に設定できます:

import { cognitoUserPoolsTokenProvider } from 'aws-amplify/auth/cognito';
import { defaultStorage } from 'aws-amplify/utils';
cognitoUserPoolsTokenProvider.setKeyValueStorage(defaultStorage);

クッキーストレージ

CookieStorageはブラウザのCookiesにトークンを保存します。クッキーはブラウザセッションとタブ全体で永続化されます。以下を呼び出すことで、このストレージに明示的に設定できます:

import { cognitoUserPoolsTokenProvider } from 'aws-amplify/auth/cognito';
import { CookieStorage } from 'aws-amplify/utils';
cognitoUserPoolsTokenProvider.setKeyValueStorage(new CookieStorage());

ブラウザセッションストレージ

sessionStorageはブラウザのsessionStorageにトークンを保存し、タブが閉じられるとこれらのトークンはクリアされます。このストレージメカニズムの利点は、セッションがブラウザが開いている限り続き、ユーザーがタブを閉じるときにサインアウトできることです。以下を呼び出すことでこのストレージに更新できます:

import { cognitoUserPoolsTokenProvider } from 'aws-amplify/auth/cognito';
import { sessionStorage } from 'aws-amplify/utils';
cognitoUserPoolsTokenProvider.setKeyValueStorage(sessionStorage);

カスタムストレージ

ストレージインターフェースを実装するクラスを作成することで、独自のカスタムストレージメカニズムを実装できます。以下はメモリストレージを使用する例です:

import { cognitoUserPoolsTokenProvider } from 'aws-amplify/auth/cognito';
import { KeyValueStorageInterface } from 'aws-amplify/utils';
class MyCustomStorage implements KeyValueStorageInterface {
storageObject: Record<string, string> = {};
async setItem(key: string, value: string): Promise<void> {
this.storageObject[key] = value;
}
async getItem(key: string): Promise<string | null> {
return this.storageObject[key];
}
async removeItem(key: string): Promise<void> {
delete this.storageObject[key];
}
async clear(): Promise<void> {
this.storageObject = {};
}
}
cognitoUserPoolsTokenProvider.setKeyValueStorage(new MyCustomStorage());

現在のユーザーセッションを取得すると、トークンはカスタム場所に保存されます。

トークン取り消し

トークン取り消しはAmplify Authで自動的に有効になります。トークンを取り消すには、signOut({ global: true })でグローバルサインアウトを設定して、すべてのデバイスからユーザーをグローバルにサインアウトできます。

次のステップ