gpt4 book ai didi

java - 如何在没有 secret 的情况下检查 JWT token 过期时间?

转载 作者:行者123 更新时间:2023-12-05 01:36:32 24 4
gpt4 key购买 nike

我需要在发送请求之前检查 JWT token 。但是我没有生成这个 token ,我只是通过授权重新接收它,比起它,我没有 secret 。

我使用 io.jsonwebtoken.jjwt 库。

如何使用这个库检查 token 过期时间?

最佳答案

您不需要密码来读取 token 。只有在确保 token 未被修改时才需要该 secret 。但是,从库的外观来看,确保您不能跳过签名检查。所以我们需要欺骗它。

在忽略签名的同时访问过期

JWT 由三部分组成,base64 编码并用点分隔:Header.Body.Signature

如果我们删除签名,库将无法检查任何内容。但是,我们还必须访问原始正文,因为不支持无签名声明。

var signedToken = "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9...";
var tokenOnly = signedToken.substring(0, signedToken.lastIndexOf('.') + 1);
var expiration = ((Claims)Jwts.parser().parse(tokenOnly).getBody()).getExpiration();

但是,如果不验证签名,您将不知道是否有人修改了 token 。我怎么强调都不为过:如果您无法验证签名,则永远不要依赖任何 token 信息。

如何做得更好

看看非对称算法(RS、ES 和 PS 系列)。这允许发行者使用私钥生成 JWT,任何拥有相应公钥的人都可以验证 token 是否有效。通过这种方式,您可以验证和访问您想要的声明,并确保它们是由您信任的发行者发布的并且没有以任何方式修改过。

关于java - 如何在没有 secret 的情况下检查 JWT token 过期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61910013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com