やっほー
Cognitoのセッションタイムアウト!トークンを整理する!

Cognitoのセッションタイムアウト!トークンを整理する!

  • 2019年1月22日
  • 2021年3月19日
  • AWS
  • 119view
AWS Cognitoのセッションタイムアウト!トークンを整理する!

Cognitoのセッションタイムアウトってどうなっているんでしょうか?

現在、「Angular×Cognito」で開発をしているのですが、どのアプリでもログイン画面ってありますよね?

このログイン画面の認証にCognitoを使っているのですが、当然セッションタイムアウトとかも考える必要があるわけです。

そこら辺の詳しいことが分からなかったので、ちょっくら調べてみました。

「Angular×Cognito」についてはこちら

Angular7でCognito認証を実装したい。 でも、よう分からん! ということで、様々なサイトを参考に、ログイン処理やAPI処理をAngular7で実装してみました。 [sitecard subtitle=Angular[…]

Angular7×Cognitoでログイン・API処理を実装!

Cognito認証の概要

まず、Cognitoでユーザ認証を行うと、CognitoからJWT(Json Web Token)が発行されます。

このトークンを利用して、API GatewayのAPIを叩いたりするわけです。

つまり、「このトークンを理解することがCognitoのセッション周りを理解すること」につながります。

JWTについてはこちら

JWTって何や? JWTとはざっくり言うとトークンのことですが、僕はAWS Cognitoの勉強をしている時に出くわしました。 今回はそんなJWTについて見ていきましょう! JWTとは JWTは、「Json Web Toke[…]

JWTって何?仕様や特徴・構成を超簡単に解説!

Cognitoから発行されるトークン

Cognitoから発行されるトークンは1つではなく、すべてで3つ発行されます。

IDトークン(ID Token) Cognito User Poolsのユーザー属性(例えばメールアドレスなど)を含めたトークンです。
ユーザーに関する情報をすべて取得したい場合はこちらを使います。
※API Gateway はこちらを採用します。
アクセストークン(AccessToken) Cognito User Poolsの最低限のユーザー情報を含めたトークンです。
更新トークン(Refresh Token) IDトークンおよびアクセストークンを更新するために利用します。
Cognito User PoolsのクライアントSDKを利用している場合は自動で更新されます。

トークンの有効期限

トークンが切れる=セッションが切れる=セッションタイムアウト」と考えるなら、各トークンの有効期限を整理しておくと良さそうです。

IDトークン(ID Token) ユーザーが認証した1時間後に有効期限切れになります。
アクセストークン(AccessToken) ユーザーが認証に成功した1時間後に有効期限切れになります。
更新トークン(Refresh Token) デフォルトでは、更新トークンは、アプリのユーザーがユーザープールにサインインしてから30日後に有効期限が切れます。
ユーザープールのアプリを作成したら、アプリの更新トークンの有効期限(日)を 1~3650 の任意の値に設定できます。

で、いつセッションが切れる?

ユーザ認証には、基本的に「IDトークン」を使用します。

IDトークンは1時間後に有効期限切れとなりますが、クライアントSDKを使用している場合、更新トークンによって自動的にIDトークンが更新されるっぽいです。

つまり、更新トークンが有効期限切れになっていない場合、IDトークンは復活することになりますね

ということは厳密に言うと「更新トークンが有効期限切れになった場合に、セッションは切れる。ただし、クライアントSDKを使用している場合に限る」となる。

参考サイト

まとめ

Cognitoのセッションタイムアウトについて調べてみましたが、AWS周りって難しいですね。

ちゃんと言及しているものが少ないので自分で調べるしかありません。

時間があればもっと掘り下げて調べてみます。

Cognitoのセッションタイムアウト!トークンを整理する!
フォローしてもらえると泣いて喜びます