问题标签 [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 投票
2 回答
2013 浏览

java - 解密 JWE 时出错

JWE Decryption 的新事物。我有一台服务器执行 JWE 并根据服务器和客户端之间共享的密钥将其发送到客户端。

我正在使用 Jose4j 进行解密并收到此错误

java.lang.NullPointerException:JWE 的明文负载尚未设置。

我正在使用此链接中显示的示例代码,接收器部分

https://bitbucket.org/b_c/jose4j/wiki/JWE%20Examples

我对服务器没有任何见解,只是在编写客户端。如果paylaod本身没有到来或者该框架正在尝试解密,我会感到困惑。

任何调试问题的指针表示赞赏

问候, 阿拉文德

0 投票
2 回答
14903 浏览

java - 如何使用 PEM 格式的 RSA 公钥解码 JWT 令牌?

我的 Java 应用程序正在接收 JWT。我有 PEM 格式的公钥:

我知道我可以使用 aJwtConsumer来验证和解码 JWT:

但是如何将我的 PEM 文件转换为可以理解的格式.setVerificationKey()

0 投票
2 回答
5164 浏览

java - 如何在 Java 中验证 Azure B2C id 令牌的 JWT 签名?

如何在 Java 中验证 Azure B2C id 令牌的 JWT 签名?我已使用 google open-id connect 成功验证了签名,但尚未成功验证 Microsoft Azure B2C jwt id 令牌的签名。我在这里使用了示例 B2C 游乐场应用程序https://aadb2cplayground.azurewebsites.net/。注册并编辑我的个人资料后,我捕获了这个 id 令牌。

我指出我的 java 代码使用以下端点进行令牌验证。

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in

在撰写本文时,这是该端点的 json。

这是我使用的java代码

起初,我收到此错误消息“无法为带有标头的 JWS 找到合适的验证密钥”。因此,我创建了一个本地 Web 服务器并从 microsoft json 端点复制了 json,但我将“kid”:“IdTokenSigningKeyContainer”替换为“kid”:“MnC_VZcATfM5pOYiJHMba9goEKY”。

该更改修复了“无法为带有标头的 JWS 找到合适的验证密钥”错误消息,但我收到了以下错误,而不是“JWS 签名无效”。

我正在寻找一个 java 解决方案来验证上面列出的 jwt id 令牌的签名。提前致谢。

0 投票
1 回答
1185 浏览

json - 从 Jose4J 中的 JSON 获取 EllipticCurveJsonWebKey

我正在使用jose4j在我的应用程序中实现基于令牌的身份验证。我想知道,是否有可能从存储在数据库中的 json 加载 JWK。我做了以下步骤:

  1. 创建了一个密钥:EllipticCurveJsonWebKey key = EcJwkGenerator.generateJwk(EllipticCurves.P521);

  2. 从中创建 JSON:key.toJson()

  3. 将 json 值保存到数据库。

  4. 从数据库加载值。

  5. 在这一点上,我被卡住了。我不知道如何使用 json 中提供的数据创建密钥。

有什么解决办法吗?

0 投票
1 回答
2058 浏览

java - 在 aws lambda 函数上验证用 ES256 签名的 JWT 签名时出错

我移植了一个工作 Java 代码,用于验证使用 SHA-2 ES256 私钥的椭圆曲线数字签名 (ECDSA) 签名的 JWT。

以下异常,如果我理解正确的话,表明底层运行时平台不支持 ES256。

我很惊讶,因为 AWS Lambda 可以在最近的 Java 8 开放 jdk 上运行,而且我认为加密是预先安装的。

我错过了什么?

这是 JOSE4J 中的错误吗?AWS Lambda 基础设施的限制?

0 投票
1 回答
1315 浏览

openssl - 将 ECC 公钥的 Bignum 转换为 JWK X、Y 坐标

我使用 EC_Key 在 OpenSSL 中创建了公钥和私钥,并具有 BigNum 格式的 x、y 和 d 组件。

现在我想按照 JWK 标准将这些 Bignum 值转换为 Base64URLEncoded 值。

例如

目前x coordinate76638B4D8040018F834AE6D6540B20E1CA95F6A8C61BE6118062918904B5C5A7

在 ObjC 中使用 OpenSSL 和 JSONKit 作为

在转换它时,它给出Base64URL encoded string

x:dmOLTYBAAY-DSubWVAsg4cqV9qjGG-YRgGKRiQS1xac

但是,在使用 Jose4J 在服务器上解码相同的 x 坐标时,将其返回为:

53548795424402895049922051400723229099982122334687022963594437126482323424679

这类似于网站上提供的: http ://www.mobilefish.com/services/big_number/big_number.php

由此表明它是 BigInt 的十进制表示

IE

  1. 将 BigInt 转换为十进制

  2. 十进制到 ASCII 字符串

  3. 然后到 Base64 url​​ 编码。

但是在应用此过程时,服务器不接受 JOSE4J 库中的 JWK 参数。

0 投票
1 回答
2705 浏览

java - 使用 jose4j 访问 JWT 嵌套声明

我无法使用 jose4j 从 JWT 访问嵌套声明。我有一个 JWT,其声明集如下所示:

当我尝试访问声明中的嵌套声明时,我遇到了问题context。我可以使用getClaimValue.

如果我想获得嵌套声明,我似乎有两个选择。

第一种选择是找到一种方法将context声明作为 a返回Map<String,Object>并将每个声明从该对象中提取出来。另一个选项是使用flattenClaims将所有声明展平为 aMap<String,List<Object>>并从地图中抓取第一个对象以用于嵌套声明。

如果授予这些 JWT 的服务对架构进行了很大的更改,那么这些选项中的任何一个都不会显得特别有弹性。

有没有更好的办法?

0 投票
2 回答
648 浏览

json - 缓存从 openid 连接元数据端点获取的 json Web 密钥

Azure AD B2C 有一个 OpenID Connect 元数据终结点,它允许应用程序在运行时获取信息。此端点包含有关令牌签名密钥、令牌内容和端点的信息。我需要查询此端点以获取 jwk_uris。jwk_uri 具有用于签署 jwt 的密钥的 uri。我需要将这些密钥缓存不超过 24 小时。谁能建议我如何在春天做到这一点?有没有支持这个的api?

0 投票
1 回答
384 浏览

jwt - 多线程系统中的 JwtConsumer

我只是想澄清一下 JwtConsumer线程安全吗?我将把它与弹簧休息控制器一起使用。在整个应用程序中使用一个消费者来处理多个请求或者更好地将其置于请求范围下是否可以?

0 投票
0 回答
278 浏览

jwt - 当 HttpsJwks 缓存中的键过时时,如何以及何时创建新的 JwtConsumerBuilder

这个问题与 jose4j JWT 库有关。我计划创建一个JwtConsumerBuilder实例来处理所有传入的请求。我在 stackoverflow 和发行说明中读到 JwtConsumerBuilder 是多线程安全的。我还计划使用该 setVerificationKey方法来验证签名。当密钥过期时,我假设我会得到一个异常。将返回哪种类型的异常:InvalidJwtSignatureExceptionInvalidKeyException

当发生此类异常时,我的计划是在通过 class 检索更新后的密钥后,用新实例更新 JwtConsumerBuilder 的全局实例HttpsJwksVerificationKeyResolver。这是一种合理的方法还是解析器会为我解决这个问题。