问题标签 [jose]

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

node.js - 在 node-jose 中使用 ConcatKDH 的公共秘密

我正在尝试使用 ConcatKDF 算法生成一个通用密钥。在以下示例中,alice 正在尝试使用 bobs 公钥使用 node-jose 库生成一个公共秘密:

它失败并出现以下错误:

如果我在这里遗漏了什么,有人可以告诉我吗?

谢谢

0 投票
2 回答
1071 浏览

node.js - 如何使用 npm Jose 创建签名的 JWT,然后验证此令牌?

我很难理解如何使用 npm jose 模块(https://www.npmjs.com/package/jose) 在我的 Node 应用程序中创建和验证签名的 JWT 令牌。我的场景是这样的:我想签署一个经过身份验证的请求以访问资源。我可以成功地为此请求授予令牌创建一个 JWT 声明,该声明尊重“its”和“aud”、“exp”等的属性,但我想对其进行签名(也就是说,使用 SignJWT 对象和“sign”方法),以便当它作为请求传回我的服务器时,我可以验证它并授予或拒绝访问。“sign”方法似乎不喜欢我为“key”参数传递的任何东西(我没有传递任何选项——也许我应该传递,但是什么?)。我正在尝试使用 RSA 密钥对。我想用私钥签名并用公钥验证。为了我的迫切需要,我想我可以改用对称密钥,但我正在考虑其他一些未来场景,我需要这种经典的 PKCS 证书密钥关系。无论如何,我认为这个选择与当前阻碍我进步的障碍没有任何关系。我首先尝试使用 jose/util/generate_key_pair 创建我的公共/私人对。但是当我去使用密钥时,错误告诉我这不受我的实现支持。所以我转而尝试在我的应用程序之外创建一个“pem”证书并应用它(作为文本),但这也失败了。“sign”方法报告密钥必须是“KeyLike”、“CryptoKey”或“Uint8Array”类型。好吧,UInt8Array(节点缓冲区)没有足够的类型信息:它不说明缓冲区中的内容,而且“KeyLike”是一个模糊的定义,可以忽略不计。在恳求搜索引擎的神谕之后,

但是,当我到达签名部分时: siaToken.sign(serverInstance.keyPair.privateKey).then(signature => {

我收到一个异常报告“TypeError:CryptoKey 不支持此操作”</p>

认为这可能与 generateKey 的 'usages' 参数有关,我在那里尝试了各种值,但没有成功。

所以,我一头雾水。谁能告诉我如何(a)为此目的最好地生成一对密钥以及(b)如何将它们应用于 JWT 签名?

0 投票
3 回答
398 浏览

node.js - 玩笑失败并出现错误:找不到模块“jose-node-cjs-runtime/jwt/sign”

我正在使用 jest 测试我的 Node.js API。此 API 是用于管理任务的 Express 应用程序。它具有注册/登录功能,仅允许经过身份验证的用户使用该应用程序。它有一个用于注册新用户的端点,并且存在许多端点,它们使用快速中间件通过 JWT 验证用户身份验证。我jose-node-cjs-runtime@^3.15.5安装了用于 JWT 生成和验证的包。

如果我使用devscript运行项目env-cmd -f ./config/dev.env nodemon src/index.js,则没有问题并且运行良好。我正在尝试使用 jest 测试文件来测试用户注册,该文件使用superagent包来测试端点。我正在使用测试脚本env-cmd -f ./config/test.env jest --watch来运行测试。此命令显示以下错误并且测试失败:

我无法弄清楚为什么会导致此错误。请帮助我找到解决方案。

我使用的是 Node.js 版本 16.7.0 并收到此错误。我今天升级了我的 Node.js 版本。我当前的 Node.js 版本是 16.9.0。升级 Node.js 版本后,我也收到此错误。以下是项目的 package.json 文件内容:

以下是内容src/models/user.js

内容src/tests/user.test.js

0 投票
0 回答
87 浏览

spring - 如何使用 jws jose 在 Spring Boot 中签署消息

我们正在尝试为 REST API 实现消息签名。API 是使用 Open API 规范创建的。如何使用 JWS 和 JWK 签署消息?以及如何使用签名消息?我尝试通过 JWS 阅读。但其中大部分最终都使用 Oauth2 JWT 令牌。我们使用 mTLS 进行相互身份验证,而不是 OAuth2。

如何在 Open API 规范中指定 JOSE 标头,以便 Spring rest 可以发送和接收签名消息。服务器也一样?spring security 中是否有拦截器可以帮助解决这个问题?

0 投票
1 回答
56 浏览

encryption - 没有 Java-Jose 包支持我的 ECDHES 曲线算法

我正在尝试使用 ECDH-ES 算法和曲线brainpoolP256r1 设置使用给定JWK 加密的JWE。我真的很想使用 Jose 包,比如 Nimbus Jose 或 jose4j。不幸的是,两者都不支持脑池曲线。我已经搜索了他们的文档好几天,看看是否有任何方法可以包含它。谁能帮我?

0 投票
1 回答
180 浏览

php - 使用带有 gree/jose 库的 PHP 从签名验证 webhook

我正在尝试遵循第 3 方文档来使用标头验证 webhook 主体Signature——第 3 方将被称为 3P 前进)。

3P 提供了一个使用 java 库的示例 Kotlin 实现。我正在使用 PHP,并决定尝试将gree/jose作为我的库。

作为健全性检查,我已将他们的示例数据复制到我的实现中,但我仍然得到错误的结果。

我已经在这个软件上挣扎了 2 多天了,我觉得我已经尝试了大约 100 种不同的东西(一些证据)。我什至尝试过部分放弃 gree/jose 库。最终,我只需要一个可行的解决方案(无论它是修复此实现还是娱乐不同的实现/库)。

我觉得在调用之前我可能缺少一个(或两个)步骤来准备我的字符串verify(),但我对这个过程太不熟悉了,无法自己识别它。当然,verify()并不表示我是变还是变冷

我去过的地方:

0 投票
2 回答
85 浏览

google-cloud-platform - 在 JS 中手动验证 GCP JWT 签名

我已经能够在jwt.io的 Web UI 上验证 GCP ID 令牌,但我很难在 JS 中的代码中复制它。

我已经使用了 thejosejsrsasign库,但收效甚微。

一些我自己的代码来获得基础知识

验证与josefalse

使用jsrsaassign也给出false

我在哪里错了?

注意:请不要推荐 NodeJS 库。我需要在其中运行脚本的环境不支持 Node 核心模块。

0 投票
0 回答
76 浏览

symfony - 如何配置 web-token/jwt-bundle jose.jku_factory 以使用 guzzle 7

我正在尝试使用 JWT 身份验证扩展 Symfony 应用程序。令牌将由远程服务器颁发,该服务器提供 JWKS URL 来检索公钥。

不幸的是,我似乎遇到了web-token/jwt-bundle,httpplugguzzle.

为了获得 JWT 和 JWKS 身份验证器,我安装了

包裹 版本
lexik/jwt-authentication-bundle v2.14.1
spomky-labs/lexik-jose-bridge v3.0.2
php-http/缓存插件 1.7.3
php-http/guzzle7-适配器 1.0.0
php-http/httplug-bundle 1.24.0
guzzlehttp/guzzle 7.4.0

起初,我用 guzzle v6 尝试过这个,但遇到了完全相同的问题。所以这个问题描述是针对 guzzle v7 的。

spomky-labs/lexik-jose-bridge所需:

包裹 版本
web-token/jwt-bundle v2.2.11
网络令牌/jwt-checker v2.2.11

按照我配置的说明:

一旦我尝试验证令牌,我会收到以下错误消息:

传递给的参数 2Jose\Component\KeyManagement\UrlKeySetFactory::__construct()
必须是 的实例Psr\Http\Message\RequestFactoryInterface,给定的实例,
在 第12行第 35行 调用Http\Message\MessageFactory\GuzzleMessageFactory
/app/var/cache/dev/ContainerMJf4ii2/getJKUFactoryService.php
/app/vendor/web-token/jwt-key-mgmt/UrlKeySetFactory.php

似乎UrlKeySetFactory期望一个RequestFactoryInterface但得到一个实现RequestFactory

由于 guzzle v7 已经实现了该RequestFactory接口,我对配置进行了如下调整:

这似乎有效。我只是想知道这是否是正确的做法。

0 投票
0 回答
24 浏览

json - 如果可以从密文中获得 JOSE JWE 明文的确切长度,那么防止这种情况的最佳方法是什么?

我想在 RSA-OAEP-256/A256GCM 加密的 JWE 数据包中传输并存储用户给定的密码。

由于该数据包内的所有内容除密码外都是静态长度,我怀疑通过对输出的分析,攻击者可以使用密文来确定明文的长度。然后,攻击者可以通过丢弃所有他知道的不同长度的密码来显着加速任何字典攻击。

是否有旨在防止此类事情发生的密码标准?将密码填充到某个预定长度以关闭此漏洞是一个好主意吗?

谢谢!

0 投票
1 回答
30 浏览

json - JOSE JWE/JWS 数据包的明文/有效负载是否需要某种格式?

我想在运行不同操作系统/库的不同端点之间传输和共享 JOSE JWE/JWS 数据包中的一些数据。因此,我希望尽可能地遵守相关标准 (RFC),以实现互操作性。可悲的是,我在阅读这些文本时没有找到答案(可能错过了什么?)。

我的一些有效载荷自然是 JSON,而另一些则不是。我认为如果无论如何只有一个条目是可能的,那么将其他条目转换为只有一个条目的 JSON 包装器是愚蠢的。

无论如何,我注意到一些库在将数据编码为 JWE/JWS 时只允许某种形式的字典,而其他库则接受任何字符串。因此,我担心将数据直接编码成这些格式是否被认为是不好的做法?我想设计我的协议未来证明,这就是为什么我非常关心在使用加密/编码时以正确的方式做事。