JWT
ユーザ情報的なものをJSONに詰め込んだ形式、ヘッダっぽいもの付加、署名、暗号化が可能
JWTのJSONをJWS Compactで署名して、HTTPヘッダなどで利用しやすくする (JWS) 署名することで真偽判定が容易
JWTクレームセット
特定の名のJSONオブジェクト
JWS(署名)またはJWE(暗号化)でくるむ
table:4.1.JWTクレームセットの中身
クレーム名 クレームの説明
iss: issuer JWT発行者
sub: Subject ユーザ識別子
aud: Audience 受信者
exp: Expiration Time 有効期限
nbf: Not Before 以前ではない(これ以前に受け入れてはならない)
iat: Isueed At 発行日
jti JWT ID 一意の識別子
4.2. Public Claim Name
登録または衝突防止された名前
レジストリ
table:クレーム
クレーム名 説明
name フルネーム
given_name 名またはファーストネーム
family_name 姓またはラストネーム
middle_name ミドルネーム
nickname ニックネーム/ハンドル名?
preferred_username 呼ばれたい名称
profile プロフィールURL
picture プロフィール画像URL
website WebページまたはBlog URL
email
email_verified 確認済みe-mailアドレスはtrue; その他はfalse
gender 性別
birthdate 生年月日
zoneinfo Time zone
locale Locale
4.3. Private Claim Name
衝突する可能性のあるその他の名前
table: 5. JOSEヘッダー
typ Type "JWT" JWTを判別するためのパラメータ JWTとわかっている場合は不要
cty Content Type "JWT" ネストされた署名または暗号化されている場合の中身の型 例 A.2
iss 暗号内からの複製 JWT発行者
sub 暗号内からの複製 ユーザ識別子
aud 暗号内からの複製 受信者
alg noneを指定することでJWS署名なしペイロードのみのJWS
JWT = JWS(JWTクレームセット) または JWE(JWTクレームセット)
ネストも可能
JWT = JWS(JWT(本文)) または JWT(JWS(本文)) など
JWTでは特定の形式のJSONとJWS Compact署名の組み合わせ、JWSではpayloadの形式は決まっていない、compactのほかにJSON形式もある
RFC 7523 JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants RFC 7797 JSON Web Signature (JWS) Unencoded Payload Option (JWTには使えない)