Cognito ユーザープール、なかなか便利そうですね。
上記を元に、いろいろと試してみて、気づいたことがいくつかあったのでまとめておきます。
更新トークンの有効期限
ユーザープールで認証をした際にはトークンが3種類発行されます。
そのうちの更新トークン(リフレッシュトークン)の有効期限は、ユーザープール作成時に指定できるのですがデフォルトだと30日になります。
ユーザープールのトークンの使用 - Amazon Cognito
もし、変更したい場合は、Cognito ユーザープール のコンソールを開いて、『アプリクライアント』->『詳細を表示』とすると
『トークンの有効期限を更新(日)』とあるので、ここで適切な日数に変更できます。
ブラウザのストレージ
また、ユーザープールで認証した際に、これらのトークンはローカルストレージに保存されるようです。なので、明示的にログアウトせず、ブラウザを落としただけだと、更新トークンが活きていて、簡単にセッションを貼りなおせるという問題があるそうです。
これへの対策として、トークンをセッションストレージに保存する、というのがあるようです。
確かめてみましょう。 ブラウザ(ここでは Firefox を使いました)で一度Cognito ユーザープールを使ったアプリにログインして、ローカルストレージを見ると
のようにローカルストレージに各種トークンが保存されていることがわかります。 ログアウトせずに一旦ブラウザを落として、再度同じサイト(ここでは http://localhost:9000 )にアクセスすると、ログイン前なのに上記と同じトークンの値が存在しているのを確認できました(画像貼っても同じなので省略しました)。
これだと、更新トークン(デフォルトで有効期限が30日)を使えば、IDトークン、アクセストークンの再取得ができちゃいますね(処理書く必要はありますが)。
ということで、ブラウザ側でユーザープールにアクセスする際に、
morisoftsample.poolData = { UserPoolId: 'ap-northeast-1_xxxxxxxxxxxxxx', ClientId: 'yyyyyyyyyyyyyyyyyyyyyyy', Storage: sessionStorage }; morisoftsample.UserPool = new AmazonCognitoIdentity.CognitoUserPool(morisoftsample.poolData);
のようにしたら、セッションストレージに保存されるとのことです。
こちらも試してみます。
今度はセッションストレージに格納されていることが分かります。 このままログアウトせずに、一度ブラウザを落として、再度立ち上げると、
のように、きれいに消えてなくなっています。
これだと少しは安心ですね。