トークンと認証情報
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での使用方法、および意図された用途についてさらに詳しく学習してください。
トークン取り消し
トークン取り消しはAmplify Authで自動的に有効になります。トークンを取り消すには、signOut({ global: true })でグローバルサインアウトを設定して、すべてのデバイスからユーザーをグローバルにサインアウトできます。