ユーザ用ツール

サイト用ツール


jwt

文書の過去の版を表示しています。



Warning: Undefined array key "cell_counter" in /var/www/sites/wiki.nullpon.moe/htdocs/inc/parser/xhtml.php on line 1538

JWT

JWT(Json Web Token)は、JSONペイロードに対して署名・暗号化を施す方法を定めたプロトコル、またはそのデータ。

主にOpenIDによる認証情報の送受信に利用されるが、任意のデータの送受信に使うことも可能。

構造

eyJhbGciOiJFUzI1NiJ9.eyJ0ZW1wZXJ0dXJlIjoyMC4yLCJodW1pbml0eSI6NTQuOCwiZHQiOiIyMDIyLTA0LTIwVDEyOjUwWiJ9.sQl6Wq5Tw9leXQ26gZgy4MwLks_snWt9Ol93h0stC6Q046CbiEpzdKU88Rhw1Y3jlwMf0DgplAJxm4ZtvJa9kg

BASE64エンコードされたデータをドットで結合したもの。内容は

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

となっている

ペイロード

JSON形式のデータ本体。

標準データフィールド

以下の7つのフィールドが標準で定義されている。例えばexpを過ぎていたら不正なトークンとしてエラー扱いするなど、各種ライブラリでサポートされているケースが多い。

フィールド名内容
issIssuer、トークン発行者
subSubject、トークン識別子、認証情報のユーザIDなどが該当
audAudience、トークンの受け取り手
expExpiration、有効期限、UNIX時間で指定
nbfNot Before、トークンが有効になる時刻、UNIX時間で指定
iatIssued At、トークンの発行時刻
jtiJWT ID、トークンごとに一意なID

これらは必須ではなく、JWTには任意のデータを載せることができる

ヘッダ

ヘッダはJSON形式で以下の情報を格納する

フィールド名内容
typType、タイプ、ほとんどの場合JWTなので大体省略される
ctyContent Type、データ形式、これもほぼJWTなので省略されがち
algAlgorithm、署名アルゴリズム

署名

アルゴリズム

HMAC(事前共有鍵を用いたハッシュ値の突き合わせ)、RSA署名、ECDSA署名が利用可能。

https://www.rfc-editor.org/rfc/rfc7518

   +--------------+-------------------------------+--------------------+
   | "alg" Param  | Digital Signature or MAC      | Implementation     |
   | Value        | Algorithm                     | Requirements       |
   +--------------+-------------------------------+--------------------+
   | HS256        | HMAC using SHA-256            | Required           |
   | HS384        | HMAC using SHA-384            | Optional           |
   | HS512        | HMAC using SHA-512            | Optional           |
   | RS256        | RSASSA-PKCS1-v1_5 using       | Recommended        |
   |              | SHA-256                       |                    |
   | RS384        | RSASSA-PKCS1-v1_5 using       | Optional           |
   |              | SHA-384                       |                    |
   | RS512        | RSASSA-PKCS1-v1_5 using       | Optional           |
   |              | SHA-512                       |                    |
   | ES256        | ECDSA using P-256 and SHA-256 | Recommended+       |
   | ES384        | ECDSA using P-384 and SHA-384 | Optional           |
   | ES512        | ECDSA using P-521 and SHA-512 | Optional           |
   | PS256        | RSASSA-PSS using SHA-256 and  | Optional           |
   |              | MGF1 with SHA-256             |                    |
   | PS384        | RSASSA-PSS using SHA-384 and  | Optional           |
   |              | MGF1 with SHA-384             |                    |
   | PS512        | RSASSA-PSS using SHA-512 and  | Optional           |
   |              | MGF1 with SHA-512             |                    |
   | none         | No digital signature or MAC   | Optional           |
   |              | performed                     |                    |
   +--------------+-------------------------------+--------------------+

現在、最もよく使われているのは RS256

jwt.1650541986.txt.gz · 最終更新: 2022/04/21 11:53 by nullpon