イベントの claims を使う方法
Node.jsの場合、Lambdaハンドラに渡されてきた event.requestContext.authorizer.claims
の中身は下記のような感じになってる。
ネットで見かけた限りでは、emailがある場合は同様に claims
に入ってる模様。それ以外のユーザー属性は調べてないので不明。ユーザー名は cognito:username
という風に不思議な感じなので注意。
auth_time
が数値ではなく文字列だったり、exp
はそもそもタイムスタンプじゃなかったりする。公式マニュアルでは数値のタイムスタンプなのに。
残り時間を確認するなら exp
をパースするより auth_time
に3600秒 (IDトークンの有効期限) を足して計算したほうが楽かと思ったけど、auth_time
はIDトークンをリフレッシュしても値が変化しないので、残り時間の算出には使えない。
exp
のパースが面倒なら、生のIDトークンをデコードして、マニュアル通りの exp
を取り出した方が楽かも。
生のIDトークンを使う方法
生のIDトークンを取得するなら event.headers
を見る。
IDトークンはJSON Web Tokenなので、Node.jsなら jsonwebtoken 等でデコードできる。
これで取得できた claims
の中身を見ると、こちらは以下のようにマニュアル通りのフォーマットになっている。日付がタイムスタンプ形式で扱いやすい。
この方法でIDトークンの残り時間を算出するには以下の通り。