gpt4 book ai didi

java - 如何用UTC过期时间验证JWT?

转载 作者:行者123 更新时间:2023-11-30 02:10:34 25 4
gpt4 key购买 nike

我已经使用 Auth0 JWT 库生成了 JWT,

                algorithm = Algorithm.HMAC256(secretkey);                  
token = JWT.create()
.withIssuer(issuer)
.withExpiresAt(UTCExpDate) //UTC now + 30 mins added
.withIssuedAt(UTCDate)
.sign(algorithm);

当我尝试通过以下代码进行验证时,

             Algorithm algorithm = Algorithm.HMAC256(secretkey);
JWTVerifier verifier = JWT.require(algorithm)
.withIssuer(issuer)
.build();
DecodedJWT jwt = verifier.verify(token);

出现以下 TokenExpiredException 异常,因为它使用当前时区(+5.30,而不是 UTC)进行验证。有什么正确的方法可以解决这个问题吗?

com.auth0.jwt.exceptions.TokenExpiredException: The Token has expired on Tue May 08 13:55:57 IST 2018.
at com.auth0.jwt.JWTVerifier.assertDateIsFuture(JWTVerifier.java:441)
at com.auth0.jwt.JWTVerifier.assertValidDateClaim(JWTVerifier.java:432)

注意:我暂时通过在验证时添加 .acceptExpiresAt(19800) 来解决此问题。但我正在寻找正确的 UTC 验证解决方案。

最佳答案

根据documentation ,您可以提供自定义 Clock 实现。将 Verification 实例转换为 BaseVerification 以获得接受自定义 Clockverification.build() 方法的可见性>。例如:

BaseVerification verification = (BaseVerification) JWT.require(algorithm)
.acceptLeeway(1)
.acceptExpiresAt(5);
Clock clock = new CustomClock(); // Must implement Clock interface
JWTVerifier verifier = verification.build(clock);

关于java - 如何用UTC过期时间验证JWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50235634/

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