JSON Web Key,簡稱JWK,是以JSON物件表示,用來驗證JWT的signature(簽章)的公開金鑰(cryptographic key)。
JWK定義用來驗證(verify) JWS及JWE的金鑰JSON物件的格式(JSON object format)。
下面是JWK公鑰的內容範例,一把代表橢圓曲線加密的JWK公鑰,用於驗證JWE的signature。
{
"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"use":"enc",
"kid":"1"
}
下面則是JWKS(JWK Set)公鑰內容範例。
{
"keys":[
{
"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"use":"enc",
"kid":"1"
},
{
"kty":"RSA",
"n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"
}
]
}
下面是JWK規範中共通的屬性簡介。有的屬性為選填(Optional)。
kty
:Key Type,金鑰類型。定義使用的加密演算法類型,例如RSA
加密或橢圓曲線加密EC
use
:Public Key Use,公鑰用途。定義公鑰用途,例如用於加密資料(encrypt data)或驗證簽章(verify signature),所以此屬性的值包括:sig:
驗證簽章eng:
加密資料
key_ops
:Key Operations,金鑰操作。定義金鑰使用時的各項操作:sign:
計算數位簽章或MACverify:
驗證數位簽章或MACencrypt:
加密decrypt:
解密wrapKey:
加密金鑰unwrapKey:
解密金鑰deriveKey:
衍生金鑰deriveBits:
衍生非用於金鑰的bits
use
同時使用。alg
:Algorithm,演算法。金鑰使用的演算法。kid
:Key ID,金鑰ID。定義JWKS (JWK Set)的JWK ID。x5u
:X.509 URL。指向X.509 certificate或certificate chain的URI。x5c
:X.509 Certificate Chain。 一串在JSON array中的base64編碼字串,表示DER PKIX certificates的值。x5t
:X.509 Certificate SHA-1 Thumbprint。X.509 certificate的DER base64url編碼的SHA-1指印x5t#S256
:X.509 Certificate SHA-256 Thumbprint。X.509 certificate的DER base64url編碼的SHA-256指印
沒有留言:
張貼留言