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

oauth - Quarkus Microprofile JWT - 备用 quarkus.smallrye-jwt.auth-mechanism

我正在试用Quarkus JWT快速入门。但是当我使用我通常在我的 Spring 应用程序中使用的令牌时。我收到以下错误。

由于无效的索赔而被拒绝。其他详细信息:[[17] 验证器 org.jose4j.jwt.consumer.IssValidator 引发的意外异常:org.jose4j.jwt.consumer.IssValidator.expectedValue(IssValidator.java:72) 处的 java.lang.NullPointerException;org.jose4j.jwt.consumer.IssValidator.validate(IssValidator.java:59); ...省略...,[14] 不存在主题(子)声明

看起来像 Microprofile JWT 身份验证规范,将主题(子)指定为 JWT 中所需的最低声明之一。那么,是否可以使用不需要主题声明的替代 JWT 身份验证机制?即可以传递给quarkus.smallrye-jwt.auth-mechanism 属性的任何其他参数,除了MP_JWT

0 投票
1 回答
140 浏览

java - jose4j 是否自动处理 Azure 签名密钥翻转?

我在我的 Java 应用程序中实现 jose4j 以验证 Azure 颁发的访问令牌的签名。该应用程序运行良好,但是,我遇到了有关Signing Key rollover的文档。jose4j 在使用时会自动处理它HttpsJwksVerificationKeyResolver吗?

我目前正在使用以下代码段来构建JwtConsumer

0 投票
1 回答
688 浏览

jwt - Quarkus MicroProfile JWT 通过 JWKS 进行身份验证

我正在尝试使用 JWKS 端点来提供用于验证 JWT 签名的公钥。在我的application.properties中,我设置了以下内容:

看来这确实被使用了:

当尝试向此应用程序中的端点发出请求时,它会崩溃:

从这个堆栈跟踪中我能理解的最好的,id=null可能是一个问题?我在这里没有其他事情要做,因为我可以确认这个 JWT 是有效的,因为我是生成它的人,并且可以通过其他应用程序对其进行验证。

我无权向此 JWT 添加其他字段/值,因为我不拥有身份验证系统。有什么办法可以解决这个问题吗?

0 投票
1 回答
136 浏览

java - 如何将 OAEPParameterSpec 添加到 JWE 对象?

我需要将 OAEPParameterSpec 作为 AlgorithmParameterSpec 添加到 JWE(Json Web 加密)对象。我怎样才能做到这一点?

我正在使用客户端 - 服务器应用程序。服务器正在使用 RSA-OAEP-256 加密算法进行加密,客户端无法解密它,因为它使用的是 HSM 并且存在填充问题。许多研究表明,必须使用 BouncyCastle 提供程序来解决这个问题,但这与我无关,因为我无法更改 HSM。

为了做到这一点,在加密之前应该在服务器端进行调整是添加以下行

这个“oaepParameterSpec”必须添加到我正在使用的 JWE 对象中,但我找不到任何参考来指导我如何做到这一点,也找不到 jose4j 规范中关于如何更改/设置 AlgorithmParameterSpec。

0 投票
0 回答
340 浏览

java - Java (Android):根据 JWA (RFC 7518) 的 Diffie-Hellman 密钥交换过程

我需要使用 ECDH 密钥交换过程来加密/解密客户端和服务器之间的消息。
我使用jose4j库来实现加密功能。

我有本地密钥对(privatedC和 public QC),我有远程公钥QT,我有transactionIDand referenceNumber

现在,我需要从所有这些详细信息中生成一个内容加密密钥 (CEK),并使用它来解密从服务器接收到的消息以及加密发送到服务器的消息。

我找不到应该怎么做。

规格:

Diffie-Hellman 密钥交换过程根据 JWA (RFC 7518) 在 Direct Key Agreement 模式下使用曲线 P-256,dCQT生成一对 CEK(每个方向一个),它们被标识为transactionID. 为了从包含的 Concat KDF 函数中获取 256 位的密钥材料,假设 ECDH-ES+A256KW 的“enc”参数并假设 KDF 的 algorithmID 为空(注意,这仅使用 RFC 7518 进行密钥派生)。此版本规范支持的参数值为:

  • “alg”:ECDH-ES
  • “apv”:referenceNumber
  • “EPK”:
  • {“kty”:“EC”“crv”:“P-256”}
  • 所有其他参数:不存在
  • CEK:“kty”:提取为 oct-256 位:
    • CEK(a->s):256 位
    • CEK(s->a):256 位

谢谢!

0 投票
1 回答
80 浏览

jwe - jose4j:如何设置完整的序列化输入?

有没有办法用 jose4j 设置 JWE 完整序列化输入?例如,下面的 TODO 中有什么内容?

0 投票
1 回答
156 浏览

java - 信任 SSL 证书:Commons HTTP 客户端如何比标准 Java 更信任?

为了验证 JWT,我使用 jose4j 从 url 获取证书,在这种情况下,来自 google:

但是,这给我一个证书错误:

PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

好的,是的,我可以使用一些脚本将它添加到 JVM 的 trustore 中,但我不想(基本上,它不是自签名证书,并且可以通过常规浏览器正常工作)。大多数时候,我使用 Apache HTTP 客户端 4.x,由于某种原因,调用确实可以正常工作:

我也尝试过使用 vanilla java,比如new URL(jwksEndpointUrl).openStream(),在这里我得到了相同的证书问题。

那么,Apache HttpComponents 客户端有什么不同,我怎样才能通过 jose4j 实现标准 Java HTTP GET 呢?

0 投票
1 回答
167 浏览

jwt - 我有模数和指数如何使用 JavaScript 为某些有效负载生成 JWE

我们有一个要求,我们将从服务调用中获取模数,用于在客户端加密(JWE)一些数据

模数和指数示例(不能更改格式)

我正在尝试使用 JavaScript Jose 库来生成 JWE,但没有运气。

我从互联网上关注以下示例,但我的问题是我使用的模数似乎是大整数(我猜)格式,但示例显示不同的格式。

如果我有如上所示的模数和指数,是否有更好的方法可以将 JOSE 用于 JWE?或者可以如下所示完成,但我收到一个错误:

0 投票
2 回答
260 浏览

jwk - 如何为画布创建 jwk 键?

在画布中,为了让 LTI 应用程序进行身份验证,站点管理员已输入远程站点的 JWK。JWK 的格式定义明确:

首先,我们可以使用像 openssl 这样的工具,创建一个密钥,然后从中生成一个 JWK 吗?目前我们正在使用 jose4j 编写代码来执行此操作,但甚至不清楚这是否有必要。

其次,Canvas 要求可选字段,例如 Kid、alg 和 use。我们猜测use应该是“sig”,我们组成了kid:“1”并猜测了alg:“RS256”

是否有一个可以访问的地方(即不在 IMSGlobal 的付费墙后面)来定义这应该是什么?它是标准的还是特定于 Canvas 的?

0 投票
0 回答
109 浏览

java - 无法在 CompactSerialization 表单中使用带有 null 标头的 jose4j 验证 JWT

我正在尝试使用 jose4j,例如,我尝试验证 JsonWebSignature 而不设置 CompactSerialization 的第一部分(因为我们使用不受保护的标头)。

它还给我

org.jose4j.lang.JoseException:解析错误:org.jose4j.json.internal.json_simple.parser.ParseException:位置 0 处出现意外字符 (�)。

你有什么想法可以允许吗?

谢谢

编辑
代码是:

JWS 的类型为.[payload].[signature]