JWTトークンについて

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. と署名の値が一致することを確認します。

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.