ユーザ用ツール

サイト用ツール


jwt

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


<markdown> # JWT

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

* https://www.rfc-editor.org/rfc/rfc7519

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

## 構造

``` eyJhbGciOiJFUzI1NiJ9.eyJ0ZW1wZXJ0dXJlIjoyMC4yLCJodW1pbml0eSI6NTQuOCwiZHQiOiIyMDIyLTA0LTIwVDEyOjUwWiJ9.sQl6Wq5Tw9leXQ26gZgy4MwLks_snWt9Ol93h0stC6Q046CbiEpzdKU88Rhw1Y3jlwMf0DgplAJxm4ZtvJa9kg ```

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

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

となっている

## ペイロード

JSON形式のデータ本体。

### 標準データフィールド

以下の7つのフィールドが標準で定義されている。これらの値はJWTライブラリでサポートされているケースが多い。例えば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`

</markdow n>

jwt.1650555344.txt.gz · 最終更新: 2022/04/21 15:35 by nullpon