问题标签 [jose4j]

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 回答
616 浏览

azure - 如何在安静的环境中缓存 Jose4j jwks 密钥集

我开始使用 jose4j 针对它发布的 OpenedId Connect jwks 验证 Azure AD 发起的 jwt 令牌。一切都在一个宁静的环境中,这意味着没有状态。

为了避免每次收到请求时都从头开始重新创建所有对象,从而避免 jose4j 一次又一次地检索 jwks,我想使用缓存。

我的困境是要缓存什么:

  1. 序列化的 json jwks 字符串并调用带外验证,当它失败时获取一个新的 jwks。
  2. HttpsJwks
  3. HttpsJwksVerificationKeyResolver
  4. JwtConsumer

我在想 JwtConsumer 是最好的。如果这是一个不错的选择,有什么想法吗?

由于缓存在所有以多线程方式处理的 restfull 请求上共享(在 Karaf 中使用 cxf 蓝图),因此 JwtConsumer 应该是线程安全的。有谁知道是不是。

我正在考虑使用 ehcache 或使用 tid 作为键的 ConcurrentHashmap 进行缓存。

0 投票
1 回答
485 浏览

java - 如何通过我的 log4j 配置禁用 jose4j 日志消息?

我在我正在处理的 java 应用程序中使用jose4j。它是一个 json Web 令牌库,我发现将包名称放在我的 log4j 配置文件中并不能消除我从这个东西中看到的(许多)调试日志消息。这是我相关的 log4j 配置部分

所以,我基本上只想看到来自 jose4j 的日志消息,当它们上升到警告级别(或更可怕)时。

我已经能够收集到一些东西。

  • 将根记录器设置为“信息”确实会使 jose4j 调试消息消失,因此 jose4j 的记录器至少知道我的日志记录设置。

  • 看起来 jose4j 使用的记录器是org.sl4j

  • 我昨天也有类似的问题。似乎添加几个罐子可以解决这个问题,但我对此并不走运。

我还将这个 jar添加到类路径中......这也不起作用。

有谁知道我怎样才能让这个库与我的日志记录设置一起使用?

0 投票
1 回答
116 浏览

jose4j - 如果在 bitbucket 上发布任何关于 Jose4J 漏洞的页面,是否有维护页面?

如果有的话,我正在寻找 JOSE4J 的漏洞列表。我们想在我们的产品中应用该库来验证 Azure AD 令牌并生成所谓的权利令牌,其中包含更多与产品相关的数据,我们非常喜欢该库,但是安全团队提出了一个问题,即是否存在任何漏洞JOSE4J 以及它们在哪里发布,以及在发现漏洞的情况下如何传达错误修复

谢谢

0 投票
1 回答
910 浏览

security - Jose RSAPrivateKey 和 JsonWebKey 数据库存储

我正在尝试使用 Jose ( https://bitbucket.org/b_c/jose4j/wiki/Home ) 来生成签名的 JsonWebToken。我在创建需要在令牌签名中使用的 RsaKeyPairs 时遇到问题。

这是我用来生成公钥/私钥的代码,我需要将其转换为字符串,以便将它们存储在数据库中然后检索它们。

我遇到的问题是当我做 rsaJsonWebKey.toJson(OutputControlLevel.INCLUDE_PRIVATE)

我收到此错误:

我尝试在 Jose 中调试代码,错误出现在 PublicJsonWebKey 类这一行中:

rsaPrivateKey 是 java.security.interfaces.RSAPrivateKey 而 getRsaPrivateKey() 返回 org.jose4j.jwk.RsaJsonWebKey

我究竟做错了什么?

我的要求是生成 KeyPairs,将它们存储在 varchar 类型字段或类似字段中的数据库中,然后在需要时,我可以从数据库中检索字符串,将其转换回私钥/公钥并使用它们来签署令牌?

0 投票
1 回答
63 浏览

jose4j - Jose4J 是否处理 HTTP 状态 307(临时重定向)

我想知道 Jose4J 在从 OpenID Connect Endpoint 检索 JWKS 时是否处理重定向 http 状态代码(例如 307)。

我自己现在进行检索并将 JWKS 传递给 Jose4J,即所谓的带外。现在,当我切换网络时,我得到了很多 307,想知道让 Jose4J 在支持 307 和其他重定向状态时进行 JWKS 检索是否明智

谢谢!

0 投票
1 回答
221 浏览

jose4j - How can I publish and consume keys from a URL?

I want to expose public keys on a URL, I think something like this:

but when I try to consume from the URL:

I get this exception:

What am I missing here?

0 投票
2 回答
2721 浏览

jose4j - Jose4j 针对加密算法验证签名 alg RS256

JWT 使用 RS256 签名,我使用 jose4j 验证 JWT 签名。在我无权访问的用户环境之一中,它会生成此意外异常:

org.jose4j.lang.InvalidAlgorithmException:RS256 是未知、不受支持或不可用的 alg 算法(不是 [RSA1_5、RSA-OAEP、RSA-OAEP-256、dir、A128KW、A192KW、A256KW、ECDH-ES、ECDH-ES +A128KW、ECDH-ES+A192KW、ECDH-ES+A256KW、PBES2-HS256+A128KW、PBES2-HS384+A192KW、PBES2-HS512+A256KW、A128GCMKW、A192GCMKW、A256GCMKW])

看起来签名算法被错误地验证为密钥加密算法。请注意,我的代码仅进行签名验证,没有任何解密/加密逻辑。这只发生在一个用户环境中,我无法在本地访问或重新创建它。

有没有人见过这样的问题?或者可以给我一个调试它的提示?

0 投票
1 回答
1572 浏览

jwt - jose4j JWT 的声明集的属性类型不是字符串对象

我一直在使用 jose4j 0.6.0 版来生成 Json Web 令牌(JWT)。直到令牌生成,令牌验证,一切都很好。JWT 的声明有效负载可以包含许多元素,例如版本、令牌 ID、颁发者、权限等。我正在传递 TokenPermissions 对象,它是 oneM2M 第 2 版规范中的标准对象,即

上面的代码片段生成以下 JWT Claim Set {iss=DAS@ServiceProvider, aud=CSE001, exp=1508999613, jti=H1wm_yaOe61Co-wND7wBAw@DAS@CDOT-SP, iat=1508996013, nbf=1508995953, sub=subject, email= mail@example.com,组=[组一,其他组,组三],版本=1.0.0,权限=cdot.onem2m.resource.xsd.TokenPermissions@7f3b97fd}

令牌的整体通过签名和声明验证,但是我什么时候尝试通过错误将类型转换权限属性传递给 TokenPermissions 它。

它通过以下错误:org.jose4j.jwt.MalformedClaimException:“权限”声明的值不是预期的类型(xyz.xsd.TokenPermissions@7f3b97fd - 无法将 java.lang.String 转换为 xyz.xsd.TokenPermissions.TokenPermissions )

什么类型的声明对象可以在 jose4j JWT 中传递,我是否必须强制在声明集中传递文本。任何帮助将不胜感激。

0 投票
2 回答
3347 浏览

java - 如何使用提供的 .cer 文件解码 JWT RS256 令牌?

我使用以下代码将证书转换为公钥并传递给 JwtConsumer:

但是,在创建 PublicKey 实例时出现以下错误。

这可能是什么原因?在此处输入图像描述JWT.IO 显示签名有效。

收到的证书为 .cer 格式。

0 投票
1 回答
233 浏览

jwt - Jose4j:HttpsJwks 线程安全吗?

有人知道 HttpsJwks 的使用是否是线程安全的吗?在我们将使用 HttpsJwks 的应用程序中,我们每秒收到大约 60 到 100 个调用,但在刷新 Jwks 时我没有看到任何锁定。

此外,HttpsJwksVerificationKeyResolver 如果找不到密钥,则直接调用刷新。

亲切的问候,肯尼斯