ユーザ用ツール

サイト用ツール


jwt

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
jwt [2022/04/21 15:34] nullponjwt [2024/07/15 11:13] (現在) nullpon
行 2: 行 2:
 # JWT # JWT
  
-JWT(Json Web Token)は、JSONペイロドに対して署名・暗号化を施す方法を定めたプロトコル、またはそのデータ。+JWT(Json Web Token)は、URLセフなデータ転送プロトコル、またはそのデータ。
  
-* https://www.rfc-editor.org/rfc/rfc7519+[RFC 7519: JSON Web Token (JWT)](https://www.rfc-editor.org/rfc/rfc7519)
  
-主にOpenIDによる認証情報の送受信に利用されるが、任意のデータの送受信に使うことも可能+主にOpenIDによる認証情報、OAuth2のアクセストークンの送受信に利用されるが、任意のデータの送受信に使うことも可能である
  
-## 構造 
  
-``` +## JWTのデータ
-eyJhbGciOiJFUzI1NiJ9.eyJ0ZW1wZXJ0dXJlIjoyMC4yLCJodW1pbml0eSI6NTQuOCwiZHQiOiIyMDIyLTA0LTIwVDEyOjUwWiJ9.sQl6Wq5Tw9leXQ26gZgy4MwLks_snWt9Ol93h0stC6Q046CbiEpzdKU88Rhw1Y3jlwMf0DgplAJxm4ZtvJa9kg +
-```+
  
-BASE64エコードされたデータをドットで結合したもの。内容は+### トーク
  
-``` +JWTはJSON形式で表現されるデタである。JWTの文脈でJSONオブジェクトをトークンと呼ぶ、
-ヘッダ.ペイロド.署名 +
-```+
  
-となっている+### クレーム
  
-## ペイロ+クンの各データをクレームと呼ぶ。
  
-JSON形式タ本体。 +クレームには任意を使用できるが、以下の特別なフィールドが仕様で定義されている。
- +
-### 標準データフィールド +
- +
-以下の7つのフィールドが標準で定義されている。例えばexpを過ぎていたら不正なトークンとしてエラー扱いするなど、各種ライブラリでサポートされているケースが多い+
  
 |フィールド名|内容| |フィールド名|内容|
行 40: 行 31:
 |jti|JWT ID、トークンごとに一意なID| |jti|JWT ID、トークンごとに一意なID|
  
-これらは必須ではなく、JWTには任意のデタを載せることがで+これらの値いずれも必須ではないがライブラリでサポトされていることが多い。例えばexpを過ぎていたら不正なトークンとしてエラー扱いするといった処理がライブラリ側行われ
  
-## ヘッダ+## JOSE
  
-ヘッダはJSON形式で以下の情報を格納する+Javascript Object Signing and Encryption の略。JWTの署名、暗号化を行う仕組みである  
 + 
 + 
 + 
 +## JWS 
 + 
 +* [RFC7515 JSON Web Signature (JWS)](https://www.rfc-editor.org/rfc/rfc7515.html) 
 +* [RFC7518 JSON Web Algorithms (JWS)](https://www.rfc-editor.org/rfc/rfc7518.html) 
 + 
 + 
 +JWS(JSON Web Signiture)はJWTデータに署名を追加する仕組み、または、そのデータ形式。一般的にJWTと呼ばれた場合これを指すことが多い。 
 + 
 + 
 +以下のJWSはCompact形式と呼ばれるフォーマットである。これ以外のフォーマットはあまり使われない。 
 + 
 +``` 
 +eyJhbGciOiJFUzI1NiJ9.eyJ0ZW1wZXJ0dXJlIjoyMC4yLCJodW1pbml0eSI6NTQuOCwiZHQiOiIyMDIyLTA0LTIwVDEyOjUwWiJ9.sQl6Wq5Tw9leXQ26gZgy4MwLks_snWt9Ol93h0stC6Q046CbiEpzdKU88Rhw1Y3jlwMf0DgplAJxm4ZtvJa9kg 
 +``` 
 + 
 +BASE64エンコードされたデータをドットで結合したもので以下のような構造になっている 
 + 
 +``` 
 +ヘッダ.ペイロード.署名 
 +``` 
 + 
 +### ペイロード 
 + 
 +JWTのデータ本体 
 + 
 +### ヘッダ 
 + 
 +JOSE Headerと呼ばれる。ヘッダはJSON形式で以下の情報を格納する
  
 |フィールド名|内容| |フィールド名|内容|
行 51: 行 73:
 |cty|Content Type、データ形式、これもほぼ`JWT`なので省略されがち| |cty|Content Type、データ形式、これもほぼ`JWT`なので省略されがち|
 |alg|Algorithm、署名アルゴリズム| |alg|Algorithm、署名アルゴリズム|
 +|kid|公開鍵署名の場合、このJWTを署名した公開鍵のID|
  
  
-## 署名 +### 署名
- +
-### アルゴリズム+
  
 HMAC、RSA署名、ECDSA署名が利用可能。 HMAC、RSA署名、ECDSA署名が利用可能。
- 
-https://www.rfc-editor.org/rfc/rfc7518 
  
 ``` ```
行 89: 行 108:
 ``` ```
  
-現在、最もよく使われているのは `RS256`+`none`は署名なし。現在、最もよく使われているのは `RS256`、HMACは受け手と利用者が同じ場合に使うと良い(cookieの値に署名をつけたい場合など) 
 + 
 +## JWE 
 + 
 +JWT暗号化の仕様はRFC7516 JWEで定義されている。 
  
 </markdown> </markdown>
jwt.1650555253.txt.gz · 最終更新: 2022/04/21 15:34 by nullpon