🦁

JWTに関して

2023/02/08に公開

JWTとは

概要

JWT(JSON Web Token)とは、JSON構造で属性情報(Claim)を表現したトークンのこと。

構造

①ヘッダー②クレーム情報③署名の3つのパーツがピリオドで区切られた文字列

json
実際の取得した文字列
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzU4NTI2NDgsImlhdCI6MTY3NTg1MjM0OCwic3ViIjoiYWJhYmFiYUBnbWFpbC5jb20ifQ.9A7HNWoTvemfKNmWyCFT4wnNr8dUtxqBNRs3gX5dIDU

ヘッダーとクレームはそれぞれJSONがBase64でエンコードされただけの文字列なので、デコードすることでJSONを取得できる。
実際にやってみた↓

ヘッダー
  • alg : 署名に使用しているアルゴリズム
  • typ : トークンタイプ
クレームデータ(一部抜粋)
  • exp : 有効期間終了期限
  • iat : JWTの発行日時
  • sub : JWTの主語となる主体の識別子
  • iss : ID Tokenの発行元
  • aud : クライアントの識別子

特徴

  • 署名されているため改ざんをチェックできる
  • URL Safe(URLに含むことができる文字のみで構成される)

利用シーン

認証の場合に使用されることが多い。
サービスにログインした時に認証情報をJWTとして保持しておく。
上の画像で言うとメールアドレスの部分。

公式サイトはこちら
https://jwt.io/

Discussion