🗒️
【Javascript】 AmplifyのJWT(IDトークン、アクセストークン)からユーザーのグループ情報を取得する
※JWTとは
「ヘッダ」「ペイロード」「署名」の3つのJSONオブジェクトが、
それぞれBase64でエンコードされ、 . (ドット) で結合されたもの。
取得方法
手順
- Amplifyでサインインを実行し、戻り値のCognitoUserを取得
- CognitoUser内のJWTをデコード
- デコード後のオブジェクトから'cognito:groups'を取得
import { Auth } from 'aws-amplify'
Auth.signIn('<ユーザーID>', '<パスワード>').then((user) => {
// CognitoUserからJWTトークンを取得
const jwt = user.sinInUserSession.accessToken.jwtToken
/* .(ドット)で分割したうちの2つ目(ペイロード)に、
Cognitoのユーザー情報が格納されている */
const decoded = JSON.parse(window.atob(jwt.split('.')[1]))
// groupsは配列で取得される
const groups = decoded['cognito:groups']
}
※user.sinInUserSession.accessToken.payload['cognito:groups']から取得できるのでわざわざトークンをデコードする必要はない。。。
Discussion