问题标签 [nimbus-jose-jwt]

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 投票
1 回答
294 浏览

java - 在 nimbus-jose-jwt 中,lifespan 和 refreshTime 有什么区别?

nimbus-jose-jwt 的DefaultJWKSetCache类有两个字段,lifespan 和 refreshTime。
来自 Java 文档 -

lifespan - 缓存的 JWK 设置在过期之前的生命周期,负数表示没有过期。
refreshTime - 缓存的 JWK 集标记为刷新的时间,如果未指定,则为负数。应该更短或等于寿命。

这两者有什么区别。这是否意味着,
在使用期限到期后,缓存的 JWK 集将被逐出并再次从 jwks 远程 url 加载(在我使用时说远程 url RemoteJWKSet)。
并且在刷新到期后,现有的 JWK 集将使用从远程 url 检索到的密钥进行更新。

但我不明白两者之间的实际区别。两者似乎都在做同样的事情。有人可以更详细地解释细节和任何例子。

编辑 - 如果我的寿命没有到期,而 refreshTime 的到期时间为 1 小时,我是否保证我的密钥将每隔一小时更新一次。

0 投票
1 回答
130 浏览

java - 当使用 nimbus-jose-jwt 时,当请求远程 url 进行缓存更新等时,我可以使用 RemoteJWKSet 找到(在日志中查看)

我正在将 nimbus-jose-jwt 与RemoteJWKSet一起使用,并希望在向远程 url 发出缓存更新等请求时找到(参见日志)。
对于 spring boot 应用程序,我设置logging.level.com.nimbusds=TRACE但找不到与调用相关的任何日志记录用于从远程服务器检索 jwks 的远程 url。
有没有办法找到何时调用远程服务器来检索 jwks。

编辑:
如果有人想查看代码,所需的 jwks 代码已上传到 github: NimbusJose-JWKSCaching

0 投票
1 回答
131 浏览

azure-active-directory - 经常遇到“无法检索远程 JWK 集:读取超时”

我们在 Tomcat 9 上运行 Spring Boot 应用程序并尝试使用 Azure B2C 进行身份验证。我们在打电话

然后大概是 AAD 代码正在获取其其余依赖项。但是,我们经常看到验证 JWT 令牌的超时:

这看起来与这篇文章非常相似,但我仍然没有解决此问题的解决方案。

有没有人有什么建议?

  • 爪哇 11
  • 雄猫 9
  • 春天 5.3.8
  • 春季启动 2.5.7
  • 弹簧安全 5.5.4
  • Nimbus-Jose-JWT 9.10.1
0 投票
1 回答
24 浏览

java - 验证来自 Azure AD 的机密令牌时无法指定 JWKSet URL

连接到 Azure AD v2.0 端点我无法验证 jwt.io 和 jwt.ms 声明为有效的令牌

公共令牌没问题:

但是验证来自机密客户端的令牌会引发异常

使用以下代码

找不到匹配的键,因为 (JWKMatcher.java:1258)

  • 密钥类型不匹配:OCT 而不是 RSA
  • 使用为空
  • 操作为空

在此处输入图像描述

似乎从 ImmutableSecret.java:47 中的秘密创建了一个不充分的 JWKSet,但我似乎对秘密如何包含在 Azure 的 jwks_uri 中找到的必要数据缺乏了解

任何意见,将不胜感激

0 投票
0 回答
56 浏览

spring-boot - 如何在 Spring Boot 中验证 jwt 令牌?

我想在我的 Spring Boot 应用程序中实现 JWT 验证。我们用于签署令牌的算法是 Ed25519\EDDSA 。

我没有找到正确的依赖项/库来使用 ED25519 算法实现 Jwt 验证程序。

有人可以建议 Maven 依赖项来验证 JWT 令牌吗?

0 投票
0 回答
17 浏览

spring - Spring Resource Server 与授权服务器的连接。默认超时

Spring 安全文档https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/jwt.html#oauth2resourceserver-jwt-timeouts 指出:

默认情况下,资源服务器使用 30 秒的连接和套接字超时来与授权服务器进行协调。

我通过以下方式创建了 JwtDecoder:

jwkSetUri 设置为一些不存在的 ip。现在,向我的资源服务器发出请求会超时(如预期的那样)并引发以下异常:

但是,引发异常的时间与文档中描述的不匹配。当我在 Windows 上运行应用程序时,大约需要 20 秒。当我在 Linux 上运行时,大约需要 2-3 分钟。看起来它取决于操作系统。但是,当我手动设置超时如下:

然后正如预期的那样,我在 5 秒后超时。我是否遗漏了什么或文档中给出的默认值不正确?

0 投票
0 回答
12 浏览

kotlin - Nimbus JOSE JWT 预计观众声称是任何一个

在验证 JWT 时,我有一个允许的客户端 ID 列表的场景。我将客户端 ID 作为受众声明放入 JWT 中,但是在验证时我需要与列表进行比较。

我尝试了以下方法:

但是,如果现在只使用我正在执行的一个客户端 ID 发出 JWT,那么验证将失败

我该怎么做才能使验证者期望任何客户端 ID 在观众声明中,但不是完整列表?当然,另一种选择是在开头的观众声明中添加一个客户端 ID,但我想避免这种情况。

0 投票
1 回答
35 浏览

java - 无法使用 nimbus 从 azure 验证访问令牌签名

在这个示例之后,我编写了一些代码来验证来自 azure 的隐式流返回的访问令牌。

但验证失败,我得到:

我想我不需要DefaultJWTClaimsVerifier零件,但删除它不会改变任何东西。我应该保留它以坚持这个例子。

你知道为什么会这样吗?

谢谢你的帮助。

PS:无法使用 jwt.io 进行验证。我从 jwk 粘贴了 access_token 和“keys”部分的第一个条目。