RFC 7517: JSON Web Key(JWK)
RFC 7517 は、暗号鍵を JSON 形式で表現するための仕様です。JWS や JWE で使用する鍵を配布・管理するために使用します。
第1部: 概要編
JWK とは何か?
JWK(JSON Web Key)は、暗号鍵を JSON 形式で表現するための標準フォーマットです。
{
"kty": "RSA",
"kid": "key-2024-01",
"use": "sig",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e": "AQAB"
}
なぜ JWK が必要なのか?
従来の鍵フォーマット(PEM、DER)と比較した JWK の利点:
| 観点 | PEM/DER | JWK |
|---|---|---|
| フォーマット | バイナリ/Base64 | JSON |
| メタデータ | 別途管理が必要 | 鍵と一緒に格納 |
| 複数鍵の管理 | ファイルを分ける | JWK Set で一括管理 |
| Web API との親和性 | エンコードが必要 | そのまま使用可能 |
| 鍵の識別 | ファイル名に依存 | kid で識別 |
JWK Set
複数の JWK をまとめたもの。認可サーバーの JWKS エンドポイントで公開されます。
{
"keys": [
{
"kty": "RSA",
"kid": "key-2024-01",
"use": "sig",
"n": "...",
"e": "AQAB"
},
{
"kty": "EC",
"kid": "key-2024-02",
"use": "sig",
"crv": "P-256",
"x": "...",
"y": "..."
}
]
}
第2部: 詳細編
共通パラメータ
すべての JWK に共通するパラメータ。
| パラメータ | 必須 | 説明 |
|---|---|---|
kty | ✅ | 鍵タイプ(RSA, EC, oct, OKP) |
use | △ | 用途(sig = 署名, enc = 暗号化) |
key_ops | △ | 鍵操作(sign, verify, encrypt, decrypt など) |
alg |