[英]Json Web Token (JWT) - can be used to guarantee the integrity of the HTTP body?
[英]Is there any part of JWT Keycloak token which can be used as a unique ID of the token itself?
我之前的问题是关于 Keycloak 令牌,但我发现的解决方案更通用,它适用于 JWT,无论 Keycloak 是什么。
基于 JWT Keycloak 令牌,我从我的数据库中获取了用户的一些附加信息( sub
字段)。 我想缓存这些信息,我正在寻找一个合适的缓存键。
我不想使用sub
字段,因为我希望缓存条目在 Keycloak 令牌更改时失效(= 为同一用户生成新令牌时)。
我可以轻松地使用整个 Keycloak 令牌或其第三部分(签名)作为密钥。 但是,它是一个相当长的字符串。
JWT Keycloak 令牌中是否有任何字段可以用作此特定令牌的唯一 ID? 保证始终存在,并且始终针对令牌的新实例进行更改。
sid
字段是这样工作的吗? 至少它似乎与sub
不同。
Keycloak 令牌中有几个 UUID,我对文档感到困惑。 我发现只有这张清晰排列的表格解释了 Keycloak 令牌字段的含义。
最后我找到了JWT的详细文档: https://datatracker.ietf.org/doc/html/rfc7519
该字段不是特定于 keycloak 的,它在 JWT 标准中定义。
将字段jti
指定为:
jti
(JWT ID)声明为 JWT 提供唯一标识符。 标识符值的分配方式必须确保同一值被意外分配给不同数据 object 的概率可以忽略不计; 如果应用程序使用多个发行者,则必须防止不同发行者产生的值之间的冲突。jti
声明可用于防止重播 JWT。jti
值是区分大小写的字符串。 使用此声明是可选的。
该字段完全符合我“提供此特定令牌的唯一 ID”的要求。 我们的 keycloak 服务器似乎为该字段分配了一个 UUID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.