Open棟梁Project - マイクロソフト系技術情報 Wiki
目次  †
概要  †
- JWTとはJSON Web Tokenの略
 
- JSONを使ったurl-safeなクレームの表現方法
 
- JWSとJWE構造の両方の中にエンコードされるJSONクレームのセット
(JWTを作る方法としてJWSとJWE、もしくは両方を使った方法がある) 
構造  †
構成要素  †
以下の要素から構成される。
ヘッダ  †
クレーム  †
- 予約済みクレーム
 
- パブリッククレーム
 
- プライベートクレーム
 
署名  †
JWTの種類  †
JWS  †
署名されたJWT
BASE64URL (UTF-8 (Header))
.
BASE64URL (UTF-8 (Claim Set))
.
Base64url (UTF-8 ( Signature))
JWE  †
暗号化されたJWT
BASE64URL (UTF-8 (JWE Protected Header))
.
BASE64URL(JWE Encrypted Key)
.
BASE64URL(JWEInitialization Vector)
.
BASE64URL(JWE Ciphertext)
.
BASE64URL(JWE Authentication Tag)
プレーンJWT  †
ヘッダ内のalgはnone = {“alg”: “none”} 。
BASE64URL (UTF-8 (Header))
.
BASE64URL (UTF-8 (Claim Set))
JWTの作成と検証手順  †
難しいのでライブラリを使用する。.NETならNugetからメジャーな奴を入れる。
JWTの作成手順  †
概要  †
- JWSまたはJWEの手順に従って生成
 
- 入れ子になったJWTの場合にはヘッダの”cty”の値に”JWT”を指定
 
手順(JWS)  †
- ヘッダを生成し、UTF-8のバイト文字列に変換し、BASE64urlエンコード。
 
- クレームセットを生成し、UTF-8のバイト文字列に変換し、BASE64urlエンコード。
 
- BASE64urlエンコード済みのヘッダとクレームセットを
ピリオドで連結する、UTF-8バイト文字列に変換し、BASE64urlエンコード。 
- 上記をヘッダで指定した暗号化プロバイダで暗号化(ハッシュ or 暗号化)
 
JWTの検証手順  †
- JWTをヘッダ、クレームセット、署名に分割しBASE64urlでデコード
 
- ヘッダから種類(JWT、JWS、JWE)、暗号化プロバイダを確認
 
- 種類、暗号化プロバイダを考慮してJWTの検証を行なう。
 
- JWTの検証が完了した後、クレーム内の有効期限の検証も行なう。
 
認証用途でJWT利用  †
参考  †
Tags: :認証基盤, :クレームベース認証