问题标签 [node-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 投票
1 回答
1587 浏览

node.js - 可靠地验证 JWS 证书链和域

我正在编写后端代码来验证来自 Google 的 SafetyNet API 的 JWS,在 Node.JS 中。我很惊讶没有找到一个现成的模块,所以我开始研究使用可用库对 JWS 的一些简单验证:

首先,谷歌说这些是所需的步骤:

  1. 从 JWS 消息中提取 SSL 证书链。
  2. 验证 SSL 证书链并使用 SSL 主机名匹配来验证叶证书是否已颁发给主机名 attest.android.com。
  3. 使用证书来验证 JWS 消息的签名。
  4. 检查 JWS 消息的数据以确保它与您的原始请求中的数据相匹配。特别是,确保时间戳已经过验证,并且应用签名证书的随机数、包名称和哈希值与预期值匹配。

(来自https://developer.android.com/training/safetynet/attestation#verify-attestation-response

我发现node-jose提供了一个简单的接口来验证 JWS,它有一个允许嵌入密钥的选项。我试图准确了解这个过程的作用以及它是否足以验证 JWS 的真实性?

使用嵌入式密钥是否确实使用根 CA 验证嵌入式证书链x5c,以及针对证书的签名?还是我需要从 Google 明确获取公钥来单独验证证书?

然后,一个有点相关的问题涉及 Google 用于执行此验证的 API:有一个 APIhttps://www.googleapis.com/androidcheck/v1/attestations/verify?key=...可以执行此确切操作,但它似乎已从 Google 的文档中删除,并且只能在过时的文章和关于 SafetyNet 的 SO 答案中找到参考因为这个似乎表明这个 API 仅用于测试,在生产中你应该自己执行证书验证。有谁知道这个 API 是否适合生产使用?如果每个人都打算手动验证 JWS,我觉得 Google 不会提供更多文档和代码示例有点令人惊讶,因为这个过程很容易出错,并且错误可能会产生严重影响?到目前为止,我只在 Java 中找到了一些 3rd 方示例,但没有从 Google 找到服务器端代码示例。

0 投票
1 回答
771 浏览

reactjs - 如何在k8s集群内部前后连接(连接被拒绝)

尝试将 React 前端 Web 连接到 nodejs express api 服务器到 kubernetes 集群时出错。

可以在浏览器中导航到http:localhost:3000和网站是好的。

但无法http:localhost:3008按预期导航到(不应暴露)

我的目标是将REACT_APP_API_URL环境变量传递给前端,以便设置 axiosbaseURL并能够在前端和它的 api 服务器之间建立通信。

部署-front.yml

服务前端.yaml

部署-back.yaml

服务返回.yaml

我尝试了很多组合,也尝试将“LoadBalancer”添加到后端服务,但没有...

我可以将完美连接到 localhost:3000 并使用前端,但前端无法连接到后端服务。

问题 1:为了正确传递 REACT_APP_API_URL 到前端,使用的 ip/name 是什么? 问题 2:为什么 curl localhost:3008 没有回答?

经过 2 天尝试 k8s 官方文档中的几乎所有内容......无法弄清楚这里发生了什么,所以任何帮助将不胜感激。

kubectl describe svc gbpd-api 响应:

0 投票
1 回答
1048 浏览

node.js - 在 golang 中解密 JWE 令牌

我有这个问题,我通过这种方式使用node-jose在 node.js 中创建了一个 JWE:

根据创建它的文档"alg": "PBES2-HS256+A128KW", "enc": "A128CBC-HS256",,如果我在 jwt.io 中检查它,它就是。

然后,我需要在 golang 中解密,所以我喜欢使用go-jose.v2

但它会恐慌“恐慌:square/go-jose:密码原语中的错误”您可以在此处查看:https: //play.golang.org/p/qB3QNtGwBsK

我已经尝试过https://github.com/lestrrat-go/jwx但是它不支持 PBES2-HS256+A128KW 算法

谢谢。

更新:这里有更多信息:

他们在节点中的键是用这个创建的:

然后输出保存在这个数组中:

我一直在尝试在 golang 中使用相同的 JWK 创建相同的 JWE,我可以在 golang 中解密,但在节点中都没有(我收到“找不到密钥”错误)......所以,交叉解密对我不起作用. 我究竟做错了什么?

0 投票
0 回答
524 浏览

javascript - 如何将 node-jose 与 jwt 令牌一起使用?

我使用jsonwebtoken使用方法获取令牌sign

我想加密令牌内的有效负载。所以我通过使用node-jose来做到这一点。

createEncrypt给我一个令牌。所以现在我需要调用签名方法并将token(来自createEncrypt)传递给这样的有效负载?

或者这是我现在的令牌(来自createEncrypt),我只需要验证使用node-jose而不使用jsonwebtoken?

根据 jwt.io,来自的令牌createEncrypt无效(无效签名)

在此处输入图像描述

0 投票
0 回答
101 浏览

jwt - 如何将索赔和到期时间传递给 JWE?

我正在玩node-josehttps://github.com/cisco/node-jose),它没有多大帮助。

我应该将 JWE 包装在 JWT 有效负载(或相反)中吗?

这是我用来进行一些测试的示例代码:

生成这样的对象:

问题

1-我如何将索赔传递aud给这个生成的 JWE?

2-我如何让它在一段时间内有效,比如说一小时?

3-我应该传递给客户什么?recipients带有等的整个对象protected

0 投票
1 回答
73 浏览

jose - 选项 ignoreExpiration 在 node-jose 中仍然有效吗?

jasonwebtoken中,该选项ignoreExpiration可用于 HS256,如下所示:

现在该应用程序正在迁移到node-jose 2.0.9. 仍然是ignoreExpiration一个有效的选择node-jose吗?

0 投票
1 回答
518 浏览

jose - 错误:导入“pem”密钥时没有密钥导入程序

该应用程序遵循node-jose 2.0.0导入.pem密钥的说明。这是文档:

密钥已经使用.pem表单生成,其内容存储在 nodejs 配置文件中,如下所示process.env.josePrivateKey

这是将密钥添加pem到密钥库的代码:

但是有一个错误:

密钥导入这里缺少什么?

0 投票
0 回答
56 浏览

node.js - 如何使用 node-jose 加密 json 对象?

我正在尝试使用库 node-jose 将加密的用户对象发送到我的客户端。我真的不明白它是如何工作的。该文档从不谈论如何加密数据对象。

基本上,如何做这样的事情:

然后,在我的 React 应用程序中,我应该能够破译它。谢谢你的帮助!

0 投票
0 回答
337 浏览

node.js - 基于公钥和私钥创建 JWT 令牌

我将 API 用于服务。该示例表明您需要使用 .pem 文件,尽管它们本身只发布公共和私有 RSA_2048 密钥。有没有办法使用https://github.com/cisco/node-jose库并根据这些密钥生成 JWT 令牌?在示例中,我只看到以下内容:

我在这里问,因为堆栈上的答案更快:)

0 投票
0 回答
39 浏览

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

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

它失败并出现以下错误:

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

谢谢