ユーザ用ツール

サイト用ツール


jwt

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
jwt [2024/01/16 08:24] nullponjwt [2024/07/15 11:13] (現在) nullpon
行 2: 行 2:
 # JWT # JWT
  
-JWT(Json Web Token)は、JSONペイロドに対して署名・暗号化を施す方法を定めたプロトコル、またはそのデータ。+JWT(Json Web Token)は、URLセフなデータ転送プロトコル、またはそのデータ。
  
 * [RFC 7519: JSON Web Token (JWT)](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エンコードされたデータをドットで結合したもの。内容は +
- +
-``` +
-ヘッダ.ペイロード.署名 +
-``` +
- +
-となっている。ヘッダ、ペイロードはJSON文字列を、署名はバイナリをBASE64エンコードしたものである。この形式では暗号化されていないのでデータは保護されない。 +
- +
-JWT暗号化仕様は[RFC7516 JWE](https://www.rfc-editor.org/rfc/rfc7516.html)で定義されている。 +
- +
-## ペイロード +
- +
-送受信されるデータ本体のこと+
  
 ### トークン ### トークン
  
-データはJSONオブジェクトで表現される。JWTの文脈ではこのデータを表現するJSONオブジェクトをトークンと呼ぶ、+JWTはJSON形式で表現されるデータである。JWTの文脈でJSONオブジェクトをトークンと呼ぶ、
  
 ### クレーム ### クレーム
  
-JSONkey value形式で表現される各データをクレームと呼ぶ。+トークンの各データをクレームと呼ぶ。
  
 クレームには任意のキーを使用できるが、以下の特別なフィールドが仕様で定義されている。 クレームには任意のキーを使用できるが、以下の特別なフィールドが仕様で定義されている。
行 50: 行 33:
 これらの値はいずれも必須ではないがライブラリでサポートされていることが多い。例えばexpを過ぎていたら不正なトークンとしてエラー扱いするといった処理がライブラリ側で行われる。 これらの値はいずれも必須ではないがライブラリでサポートされていることが多い。例えば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形式で以下の情報を格納する
  
 |フィールド名|内容| |フィールド名|内容|
行 61: 行 75:
 |kid|公開鍵署名の場合、このJWTを署名した公開鍵のID| |kid|公開鍵署名の場合、このJWTを署名した公開鍵のID|
  
-## 署名 
  
-`ヘッダ.ペイロード` に対する署名データ +### 署名
- +
-* [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) +
- +
-### アルゴリズム+
  
 HMAC、RSA署名、ECDSA署名が利用可能。 HMAC、RSA署名、ECDSA署名が利用可能。
行 101: 行 109:
  
 `none`は署名なし。現在、最もよく使われているのは `RS256`、HMACは受け手と利用者が同じ場合に使うと良い(cookieの値に署名をつけたい場合など) `none`は署名なし。現在、最もよく使われているのは `RS256`、HMACは受け手と利用者が同じ場合に使うと良い(cookieの値に署名をつけたい場合など)
 +
 +## JWE
 +
 +JWT暗号化の仕様はRFC7516 JWEで定義されている。 
  
 </markdown> </markdown>
jwt.1705393446.txt.gz · 最終更新: 2024/01/16 08:24 by nullpon