LoginSignup
1
2

More than 3 years have passed since last update.

CognitoのAccessTokenを取得

Last updated at Posted at 2020-10-20

背景

Cognitoでは、AccessToken、IDToken、RefreshTokenを取得できる。ここでサーバ側でAccessTokenの中身を使用してセッション管理に利用することができないか?

実装

Cognito User Poolでユーザを作成する。

作成画面については別途サーバで構築した管理画面で実施
(APIGateway+Lambdaと S3に設置したViewでもOK:サーバレスで作成すると恐らく月額数円)

UserPoolでランクの属性を追加

スクリーンショット 2020-02-03 17.54.30.png

認証が行われると3つのトークンが払い出される。今回はIDトークンを使用してセッション管理を行う。

トークン名 内容
IDトークン name,emailなど認証されたユーザ情報が入る
アクセストークン 認証されたリソースへのアクセスを付与
更新トークン 新しい ID またはアクセストークンの取得に必要な情報が含まれる

IDトークンはJWTなので下記のようなトークンをクライアント側に返すので必要な要素をセッションやCookieに格納するなどの処理を行う。ここでカスタム属性を設定した場合は、下記の情報にカス

タム属性が付与される。
ちなみにJWTはbase64-encodedされたJSONこのあたりは次の「検証方法」に詳細な記載がある。

{
  "sub": "aaaaaaaa-bbbb-cccc-dddd-example",
  "aud": "xxxxxxxxxxxxexample",
  "email_verified": true,
  "token_use": "id",
  "auth_time": 1500009400,
  "iss": "https://cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-2_example",
  "cognito:username": "anaya",
  "exp": 1500013000,
  "given_name": "Anaya",
  "iat": 1500009400,
  "email": "anaya@example.com"
}

検証方法

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2