Json 受保护标头JWS

Json 受保护标头JWS,json,encryption,jwt,jose,Json,Encryption,Jwt,Jose,我在努力理解。在关于JWS的部分中,说明如下: 在受保护的头中包含公钥不仅会 服务器验证签名的能力,我们也将 确保它是正确的,因为受保护的标头是 完整性得到保护 这是示例对象的外观: { "payload": "eyAKICAgICAgICAiZnJvbSI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiQ2hlY2tpbmcgYWNjb3VudCIKICAgICAgICB9

我在努力理解。在关于JWS的部分中,说明如下:

在受保护的头中包含公钥不仅会 服务器验证签名的能力,我们也将 确保它是正确的,因为受保护的标头是 完整性得到保护

这是示例对象的外观:

{
    "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"
  }
}