Json 受保护标头JWS
我在努力理解。在关于JWS的部分中,说明如下: 在受保护的头中包含公钥不仅会 服务器验证签名的能力,我们也将 确保它是正确的,因为受保护的标头是 完整性得到保护 这是示例对象的外观:Json 受保护标头JWS,json,encryption,jwt,jose,Json,Encryption,Jwt,Jose,我在努力理解。在关于JWS的部分中,说明如下: 在受保护的头中包含公钥不仅会 服务器验证签名的能力,我们也将 确保它是正确的,因为受保护的标头是 完整性得到保护 这是示例对象的外观: { "payload": "eyAKICAgICAgICAiZnJvbSI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiQ2hlY2tpbmcgYWNjb3VudCIKICAgICAgICB9
{
"payload": "eyAKICAgICAgICAiZnJvbSI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiQ2hlY2tpbmcgYWNjb3VudCIKICAgICAgICB9LAogICAgICAgICJ0byI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiU2F2aW5ncyBhY2NvdW50IgogICAgICAgIH0sCiAgICAgICAgImFtb3VudCI6IDI1MAogICAgICAgICJjdXJyZW5jeSI6ICJFVVIiCiAgICB9",
"protected": "eyAKICAgICAgICAiYWxnIjogIlJTMjU2IgogICAgfQ==",
"header": {
"signature": "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU01Q"
}
}
受保护的标题是以下内容的base64url
编码:
{
"alg": "ES256"
}
我能找到的唯一关于将公钥放入其中的参考是使用密钥id字段kid
,如下所示:
{"alg":"RSA1_5","kid":"2011-04-29"}
这就是这篇文章所指的吗?或者它是指其他内容(例如将整个公钥放入受保护的头中,如下所示):
{"alg":"RSA1_5","key":"somepublickeyhere"}
您走的是正确的道路。本文可能指的是中定义的
“jwk”
标题参数,如下所示:
“jwk”(JSON Web密钥)头参数是
对应于用于对JWS进行数字签名的密钥。此密钥为
表示为JSON Web密钥
JSON Web密钥(JWK)是中定义的JOSE的另一部分。它定义了如何以JSON格式表示加密密钥,以便它们可以在JWS标头中传输。JWK格式的RSA密钥可能如下所示:
{
"kty":"RSA",
"n": "0vx7 (...) DKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"
}
{
"alg": "RS256",
"jwk": {
"kty":"RSA",
"n": "0vx7 (...) DKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"
}
}
和(受保护的)带有密钥的JWS头,如本文所述,因此可能如下所示:
{
"kty":"RSA",
"n": "0vx7 (...) DKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"
}
{
"alg": "RS256",
"jwk": {
"kty":"RSA",
"n": "0vx7 (...) DKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"
}
}