问题标签 [jjwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
540 浏览

java - Spring security 将 ApplicationEventListener 添加到 ExpiredJwtException

我已经AuthenticationFailureListener通过使用实现了登录失败,ApplicationListener<AuthenticationFailureBadCredentialsEvent>并且我所有的 Bad Credentials 事件都在同一个类中处理,非常方便,我尝试添加一个侦听器,ExpiredJwtException或者SignatureException但我无法确定触发了哪个事件,我尝试过 -

捕获所有ApplicationEvent,但当此异常之一发生时,该方法onApplicationEvent不会被触发。我可以捕捉到这个异常,但我想像处理一样全局处理BadCredentialsException它们AuthenticationFailureBadCredentialsEvent。试过AuthenticationFailureExpiredEvent-

但仍然无法正常工作。

0 投票
2 回答
12127 浏览

spring-boot - 如何创建用于签署 JWT 令牌的 Spring 安全密钥?

implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.10.6'用作依赖项。

我想创建一个 JWT 令牌,如下所示:

application.properties如上所示,我曾经在和引用该密钥中提供一个字符串,但不推荐将字符串作为密钥提供。我应该如何创建密钥?

0 投票
1 回答
13737 浏览

java - 在 UTC 中使用到期日期时,JWT 的到期不起作用

我正在使用jjwtjwt 令牌创建。使用本地系统时间设置到期日期时,一切正常,即

日期 expDate = new Date(new Date().getTime() + 180000); //java.util.Date

但我尝试使用 UTC 格式的日期时间并用相同的 3 分钟到期日期签署了 jwt 令牌。现在它正在抛出ExpiredJwtException,即使我在创建令牌后立即进行验证。我正在使用 SimpleDateFormat 将时区设置为 UTC。这是我在 java 中使用 jjwt 创建令牌的代码:

令牌已成功创建。我也可以在线验证内容。expDate 比 issDate 早 3 分钟。我还在通过传递创建的令牌创建令牌后立即调用用于验证令牌的方法。我的验证方法有:

但我越来越ExpiredJwtException。错误是

expired jwt :JWT 于 2019-05-17T01:24:48Z 过期。当前时间:2019-05-17T07:06:48Z,相差20520836毫秒。允许的时钟偏差:0 毫秒。

从我的日志来看,此时我的令牌中的发行日期和到期日期是:

这是怎么回事?并感谢您的帮助。

0 投票
1 回答
317 浏览

jwt - 在使用 JJWT 读取 JWS 标头之前需要 JWS 孩子标头

我正在构建的 API 接收 JWS 令牌。我想请客户设置孩子标题,以便我可以提供密钥轮换。但是,可以理解的是,在我提供公钥进行验证之前,JJWT 不允许我读取 child 标头:

A signing key must be specified if the specified JWT is digitally signed

但我需要孩子的标题首先选择正确的“签名”键。有点鸡和蛋的问题。我应该如何处理这个?我是否只要求我的客户在 JWS 标头和普通 HTTP 标头中提供 child 值?

0 投票
1 回答
73 浏览

spring-boot - 使用方法安全springboot

我使用这个示例(https://www.djamware.com/post/5c819d0180aca754f7a9d1ee/securing-restful-api-with-spring-boot-security-and-data-mongodb#ch5)来创建一个安全的rest Api。但是可以使用@EnableGlobalMethodSecurity 在方法级别进行保护吗?

怎么样.. tks

0 投票
1 回答
893 浏览

ios - 为 Apple 的 DeviceCheck API 生成 JWT

我正在尝试使用 Apple 的 DeviceCheck API。我似乎无法制作一个不会失败的请求,因为401 Unable to verify authorization token我尝试了一些小的变化。

我把这个暂存文件的输出插入到这里:

按照Apple 文档的建议。

这个整体结构对吗?我正在尝试遵循本教程,这意味着这种结构:

JWT 签名流程概述

但苹果的这句话:

您发送到查询和更新端点的每个请求都必须包含一个包含您的身份验证密钥的授权标头。身份验证密钥必须使用 ES256 算法并采用 Base 64 URL 编码的 JSON Web 令牌格式。如果您的令牌不使用此格式,您会收到 BAD_AUTHENTICATION_TOKEN HTTP 错误。

建议我的请求应该“包含我的身份验证密钥”,而不是使用密钥签名。

0 投票
1 回答
338 浏览

java - 如何使用 JJWT 从 .pem 文件中获取私钥

我有JJWT库集成的 java 项目。现在我有一个 .PEM 文件,其中包含我的 RSA 私钥。如何读取 .PEM 文件并使用JJWT库获取私钥?

0 投票
1 回答
4550 浏览

java - 验证从 php 生成的 jwt 令牌时,Jjwt 抛出签名错误

我需要在使用 Java 中的 CAS 构建的 SSO 中添加 PHP 应用程序。用户身份验证后,SSO 将凭据发送到 PHP 应用程序,并使用以下代码构建令牌:

因此,我尝试使用 java 验证生成的令牌,如下所示:

为了验证签名,jjwt 拆分了令牌的 3 个部分,并尝试使用令牌标头中提供的算法对前 2 个部分进行签名。此步骤与创建令牌时用于创建令牌的签名相同。理论上,在创建和验证这两个步骤中使用相同的算法、paylod 和 secret,签名应该是相同的。但它不会发生。抛出以下异常:

io.jsonwebtoken.SignatureException:JWT 签名与本地计算的签名不匹配。JWT 有效性不能被断言,也不应该被信任。

0 投票
2 回答
6056 浏览

java - DefaultJwtParser:如何仅解码 JWT?(没有密钥,没有验证)

我不想使用密钥(我没有)验证 JWT,我只想解码 JWT 并读取有效负载。这可以使用 jsonwebtoken.io:jjwt 来实现吗?API 中似乎缺少一个方法。

当然,我可以自己对令牌进行拆分和 Base64 解码,但感觉就像人们期望从 JWT 库中获得的最基本功能一样;因此我怀疑我错过了一些东西。

0 投票
2 回答
1141 浏览

spring-boot - 从 Kotlin 调用 JJWT 时出现 NoMethodError

我正在 Kotlin 中开发一个小型 Spring Boot 应用程序,现在我想使用 JJWT 保护它。粗略地说,我将本教程翻译成我的用例:https ://jakublesko.com/spring-security-with-jwt/

在项目中,我有这个 AuthenticationFilter:

当我发布到应该发布令牌的身份验证 URL 时,我收到:

java.lang.NoSuchMethodError: io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()I at io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:69) ~[jjwt-api-0.10.7.jar:na]

我可以调试该successfulAuthentication方法,并看到它是用合理的参数调用的。引起我注意的是结尾括号后面的“我” getMinKeyLength()I。我的谷歌搜索技能显然不足以找到它存在的原因,但我强烈怀疑它与反射和从 Kotlin 代码调用 Java 库有关。

周围有人能告诉我如何解决这个问题吗?我已经猜不透了。