JWS
RFC 7515 JSON Web Signature https://tex2e.github.io/rfc-translater/html/rfc7515.html
RFC 7797 JSON Web Signature Unencoded Payload Option
JOSEのひとつ
バイナリデータ (payload)をBASE64URLにしてRSASSAやHMACなどJWAのアルゴリズムでデジタル署名する仕組み
OpenID ConnectではデータはJWT形式のJSONなことが多い。
JOSEの枠の中で作られた?
Compact形式はBASE64URLを . でheader, payload, signature と3つつなげたものになる
JSON形式も可、JSON形式から作る方が楽かもしれない。
JWTの入れ物としてJWS Compact署名が使われる。
payload に JWTクレームセット
JWEとはどちらの順でも入れ子にできるので必要に応じて対応するとよいのかも。
主にOpenID Connectなどで利用される OAuthでは使っても使わなくてもいい
RFC 7515 JWS 署名
RFC 7516 JWE 暗号化
RFC 7517 JWK 鍵
RFC 7518 JWA アルゴリズム
RFC 7519 JWT トークン
等がセット
アルゴリズムはJWAに分けられているがサンプルを見ればJWSだけでも実装できたり。
table:署名アルゴリズム (JWA)
署名方式 alg SHA-256 SHA-384 SHA-512
なし none 署名しない
HMAC HS256 HS384 HS512 共通鍵MAC 必須 Required
RSASSA-PKCS1_v1_5 RS256 RS384 RS512 RSA公開鍵署名 推奨 Recommended
ECDSA P-256 P-384 P-521 ES256 ES384 ES512 ECDSA楕円公開鍵署名 推奨+ Recommended+
RSASSA-PSS PS256 PS384 PS512 RSA公開鍵署名 Optional
alg crv
EdDSA EdDSA Ed25519 Ed448 EdDSA楕円公開鍵署名 RFC 8037
などを使う
EdDSAの曲線種類 crv Ed25519, Ed448はalgと別で指定する
alg アルゴリズム
EdDSA RFC 8037
jku JWK Set URL
jwk JSON Web Key
kid Key ID
x5u X.509 URL
x5c X.509 Certificate Chain
x5t X.509 Certificate SHA-1 Thumbprint
x5t#S256 X.509 Certificate SHA-256 Thumbprint
typ Type
cty Content Type
crit Critical
RFC 7797 BASE64URLを使わないJWSオプション、JWTでは使えない