Agile育成ブログ
未来を変える喜びを
未分類

JWTトークン


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

JWTとはJSON Web Tokenの略称であり、属性情報(Claim)をJSONデータ構造で表現したトークンの仕様です。

JWTの例

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

JWTの構成をわかりやすくするため、改行をしてみます。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

すると、JWTは2つのピリオド(”.”)で区切られた3つのパートによって成り立っているということがわかります。
この3つのパートにはそれぞれ役割があり、前から順番にヘッダー(Header)、ペイロード(Payload)、署名(Signature)となっています。

<ヘッダー>.<ペイロード>.<署名>

ヘッダー

ヘッダーはJWTの署名検証を行うために必要な情報を格納するためのパートとなっています。
文字列の形式としては、キー名と値のペアで表現されたJSONをBase64urlエンコードした文字列となっています。
Base64エンコードの場合は”+”, “/”, “=”が含まれますが、JWTはURIのクエリパラメーターなどに使用されることを想定しているので、URL-safeに表現するためにBase64urlエンコードがされています。
Base64urlエンコードでは”+”を”-“に、”/”を”_”、”=”を””に変換しています。
デコードをするとJSONに変換できるので、デコードをしてみます。

ペイロード

ペイロードはやりとりに必要な属性情報(Claim)です。
ペイロードの内容はアプリケーションによっては異なるため、必須とされるものは存在しませんが、相互運用性のある属性情報については予約済みパラメーターとして提供されています。
ヘッダーと同様に、JSONをBase64urlエンコードした文字列なので、デコードが容易にできます。

{
  "admin": true,
  "name": "John Doe",
  "sub": "1234567890"
}

JWTを利用した

OAuth 2.0のAccess Token取得のためのJWTの利用

https://www.agile-software.site/2022/07/16/oauth%e3%81%a8%e3%81%af%ef%bc%9f/

You cannot copy content of this page