java - JWT token 到期时间在生成的 token 中被修剪

标签 java date token jwt

我正在我的一个应用程序中生成 JWT token 以与某些第三方 API 进行通信,我可以正确创建 token ,直到我开始面临一个奇怪的问题,下面是我如何设置 token 的到期日期:

JWTClaimsSet jwtClaims = new JWTClaimsSet();
jwtClaims.setExpirationTime(new Date(new Date().getTime() + 1000*60*120));
jwtClaims.setCustomClaim("myobj", prepare(myobj));
JWSHeader header = new JWSHeader(JWSAlgorithm.RS256);
header.setContentType("text/plain");

就在这下面我做了一个

System.out.println("after :::"+jwtClaims.getExpirationTime().getTime());

将值打印为:1420636467027 然而,当我解码我的 token 时,我得到的值为:1420636467,所以基本上最后 3 位数字被修剪,而且第三方 API 由于 token 过期而使我的调用失败,这是正确的。 为了避免这种情况,我还需要做些什么吗? 非常感谢在这方面的任何帮助。

最佳答案

JWT token 中的所有时间(例如在时间(iat)发出,而不是在时间(nbf)之前和过期时间(exp))自 1970 年 1 月 1 日以来都应该以秒为单位进行测量。由于您指定的时间以毫秒为单位,因此当服务器破解您的 JWT token 时,这可能会导致服务器端出现问题。只需开始使用以秒为单位的时间。希望这能解决您的问题。

关于java - JWT token 到期时间在生成的 token 中被修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818404/

相关文章:

apache-spark - 使用 DATE 示例数据填充 pyspark 数据框

ios - 访问 token 过期后处理 API 调用

应用 GMT 后 Java 将时间恢复为初始时间

java - 在 EWS api 的帮助下使用 java 创建带有附件的 Outlook 日历定期 session

java - asyncTask 中的 findViewById()

java - 是否有类似于 usingColumns() 的 SimpleJdbcInsert 方法,该方法将排除的列列表作为参数?

mysql - 计算mysql中两个日期之间的差异以显示年份和月份

node.js - Sails JS - 删除现有的 JWT

authentication - token 是什么意思?

java - Eclipse 4 RCP应用程序创建C编辑器