JWTトークンはJson Web Token の頭文字を取ったものです。
JWTトークンとは何者かについて記載します。
JWTとは
Json Web Toke とはJSONデータ構造で表現されたトークン(文字列)になります。
署名がついているので、署名を確認することでトークンの信頼性も確認できます。
JWTの構造と内容
形式
ヘッダー、ペイロード、署名から構成されます。
各々は . (ドット)で連結され一つの文字列となります。
また各々はBase64urlでエンコードされています。
・形式
ヘッダー.ペイロード.署名
例)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
ヘッダー
ヘッダーにはJWTトークンのメタ情報が含まれています。
ヘッダーをBase64Urlでデコードすると以下のようになります。
{
"alg": "HS256",
"typ": "JWT"
}
alg
どのようなアルゴリズムで署名しているかを表しています。
typ
このトークンはどのようなタイプかを表しています。JWTトークンの場合、”JWT” となります。
ペイロード
ペイロードに含める内容は任意です。作成するアプリケーションにより決定します。
例えば、認証で使用する場合、属性情報が含まれています。属性情報とは認証者(例えばログインユーザ)に関する情報のことです。
以下は、ペイロードの例になります。
{
"name": "user name",
"email": "mail@example.com"
}
署名
JWTトークンが信頼できるものかどうかを確認する時に使用します。
署名の確認
署名を確認することでJWTトークンの信頼性を確認できます。
以下の順で信頼性を確認します。
1. JWTトークンのヘッダーとペイロードを.(ドット)で連結します。
2. 1 を ヘッダーのalgで記載されたアルゴリズムでハッシュ化します。
3. Base64urlエンコードします。
4. 3. と署名の値が一致することを確認します。
最後に
特にありません。