【问题标题】:Protected Header JWS受保护的标头 JWS
【发布时间】:2019-03-15 19:21:23
【问题描述】:

我正在努力理解this blog post about JOSE。在关于 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"}

【问题讨论】:

    标签: json encryption jwt jose


    【解决方案1】:

    你走在正确的道路上。文章大概指的是RFC-7515中定义的"jwk"头参数,如下:

    “jwk”(JSON Web Key)头参数是公钥, 对应于用于对 JWS 进行数字签名的密钥。这把钥匙是 表示为 JSON Web Key。

    JSON Web Key (JWK) 是 JOSE 的另一部分,在 RFC-7517 中定义。它定义了如何以 JSON 格式表示加密密钥,以便它们可以传输,例如在 JWS 标头中。 JWK 格式的 RSA 密钥可能如下所示:

    {
      "kty":"RSA",
      "n": "0vx7 (...) DKgw",
      "e":"AQAB",
      "alg":"RS256",
      "kid":"2011-04-29"
    }
    

    如文章中所述,带有密钥的(受保护的)JWS 标头因此可能如下所示:

    {
      "alg": "RS256",
      "jwk": {
        "kty":"RSA",
        "n": "0vx7 (...) DKgw",
        "e":"AQAB",
        "alg":"RS256",
        "kid":"2011-04-29"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2019-10-18
      • 2014-04-24
      • 1970-01-01
      • 2022-11-19
      • 2016-02-19
      • 1970-01-01
      • 2015-09-05
      • 2020-03-31
      相关资源
      最近更新 更多