🗒️

【Javascript】 AmplifyのJWT(IDトークン、アクセストークン)からユーザーのグループ情報を取得する

2021/03/17に公開

※JWTとは

「ヘッダ」「ペイロード」「署名」の3つのJSONオブジェクトが、
それぞれBase64でエンコードされ、 . (ドット) で結合されたもの。

取得方法

手順

  1. Amplifyでサインインを実行し、戻り値のCognitoUserを取得
  2. CognitoUser内のJWTをデコード
  3. デコード後のオブジェクトから'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