我试图理解这篇关于 JOSE 的博客文章。在关于 JWS 的部分中,它说如下:
在受保护的标头中包含公钥不仅可以使服务器能够验证签名,而且我们还将确保它是正确的,因为受保护的标头是完整性保护的!
这是示例对象的样子:
{
"payload": "eyAKICAgICAgICAiZnJvbSI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiQ2hlY2tpbmcgYWNjb3VudCIKICAgICAgICB9LAogICAgICAgICJ0byI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiU2F2aW5ncyBhY2NvdW50IgogICAgICAgIH0sCiAgICAgICAgImFtb3VudCI6IDI1MAogICAgICAgICJjdXJyZW5jeSI6ICJFVVIiCiAgICB9",
"protected": "eyAKICAgICAgICAiYWxnIjogIlJTMjU2IgogICAgfQ==",
"header": {
"signature": "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU01Q"
}
}
受保护的标头是以下base64url
编码:
{
"alg": "ES256"
}
我能找到的将公钥放入其中的唯一参考是使用 key id 字段kid
,如下所示:
{"alg":"RSA1_5","kid":"2011-04-29"}
这是帖子所指的吗?还是它指的是其他东西(例如将整个公钥放入受保护的标头中:
{"alg":"RSA1_5","key":"somepublickeyhere"}