"JWT令牌中的“kid”声明是什么意思?"

124

我生成了一个JWT,其中某些声明我理解得很好,但头部有一个称为kid的声明。有人知道它是什么意思吗?

我是使用auth0.com生成的令牌。


请参考以下链接以获取解决方案 ;-) https://dev59.com/zVEG5IYBdhLWcg3wJlHh - Subodh
2个回答

149

kid是一个可选的头声明,用于保存密钥标识符。当您有多个密钥用于签署令牌,并且需要查找正确的密钥来验证签名时,这个头声明特别有用。

一旦签署,JWT就成为了JWS。请考虑来自RFC 7515的定义:

4.1.4. "kid"(Key ID)头参数

kid(密钥标识符)头参数是一个提示,指示用于保护JWS的密钥。该参数允许发送者明确向接收者信号变更密钥。关于kid值的结构没有具体规定。其值必须是区分大小写的字符串。使用此头参数是可选的。

当与JWK一起使用时,kid值用于匹配JWK的kid参数值。


1
这意味着kid参数只能与HS256算法一起使用,对吗? - Aman Gupta
这个答案是客观正确的,但有时候跟踪错误答案也很有用 - https://github.com/distribution/distribution/issues/813 - Dave Ankin
@AmanGupta 你为什么认为只有 HS256 才有密钥标识符?或者说 只有 HS256 使用情况需要进行密钥查找/识别? - Dai
还有一个值得一提的网址是https://www.rfc-editor.org/rfc/rfc7638,这是一些工具用来计算kid的标准。 - toppk

18

14
在最终版本的文档可用时,不应使用文档草稿作为参考。"kid"声明已从JWT移动到JWS和JWE规范中。 - cassiomolin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接