问题标签 [jwk]

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

javascript - 无法使用 x5c (x509) 公共证书验证 JWT

更新我正在尝试使用下面的 x5c / x509 公钥值以编程方式验证 JWT 访问令牌。我可以通过将令牌和 x5c 值插入外部网站而不是以编程方式使用 JavaScript / jsrsasign 来实现这一点。任何建议将不胜感激。

这是 OIDC 提供商的公共 JSON Web 密钥集。

这是我用来通过 x5c 验证访问令牌的代码。我的印象是我应该使用 x5c 值,但如果有另一种适合我的方式。只需要在keys下用上面的值来验证token。

我应该在base64解码之前/之后将BEGIN / END PUBLIC KEY字符串添加到x5c值吗?是的,感谢亚当

在验证之前是否需要处理 x5c 值?

返回响应 - 解码:假

先感谢您。

0 投票
1 回答
486 浏览

keycloak - Keycloak 是否在其 JWK 端点中支持 x5* 参数?

我使用 Keycloak 作为我的身份和访问管理器。

我有一个用例,我需要将敏感信息传输给另一个可信方。流程是这样的:

  • 我通过该方的 JWK 端点检索受信任方的公钥
  • 我使用受信任方的公钥加密敏感数据
  • 然后我向自己发出一个 JWT 令牌。我用我的私钥签名。
  • 接下来,我将数据与授权标头中的 JWT 令牌一起传输给受信任方
  • 受信方收到我的请求
  • 受信任方调用我的 JWK 端点以获取我的公钥
  • 受信任方使用我的公钥验证我发送的 JWT 令牌
  • 然后受信任方使用其私钥解密敏感数据

通过此流程,受信任方可以确信

  • 敏感数据在传输过程中未被篡改

他们不能自信的是:

  • 我就是他们认为的我;我是发送数据的人。

他们唯一知道的是,他们打电话给我的端点看起来像是属于我的公司的。但是,如果攻击者以这样一种方式拦截请求,即他们返回自己的公钥并能够发布由他们的私钥签名的自己的令牌,那么他们可以将他们想要的任何数据传输给受信任的一方。

这就是 x.509 证书的用武之地。受信任的一方需要一种方法来确定另一端的一方是我。

截至四天前,Keycloak 似乎在 5.0.0-SNAPSHOT 中支持x5c(证书链);这是通过添加/生成新的公钥/私钥对和证书来配置的。如果配置了证书,则x5c可以通过 JWKS 端点使用该参数。

但是,我还需要提供一个x5t(指纹)参数。Keycloak 是否提供或打算在未来提供任何支持?

0 投票
2 回答
2645 浏览

go - 如何在go中从jwk生成pem

我正在尝试使用这个库生成一个 pem 字符串:

“github.com/lestrrat-go/jwx/jwk”

但到目前为止我还没有,我猜这是因为我是新手,有些东西我不明白。我已阅读此处找到的文档:doc

我的代码从服务器获取 JWK,一旦我拥有它,我会尝试在此处生成一个 pem 字符串:

我真的迷路了,我尝试了多种方法(有和没有这个库),似乎我找不到任何例子(他们通常解释如何生成密钥,或从 pem 到 jwt,但我的 go 应用程序是客户。)

任何帮助,将不胜感激

0 投票
1 回答
1582 浏览

encryption - 如何通过 openssl 将 jwk 转换为公钥

我有一个 JWE,并且在标题中有一个临时公钥。所以我有坐标X和Y。

我在 shell 模式下的问题是如何将 JWK 转换为 pem 格式的 ECC 公钥。

例如,这里有一个 jwk

在我这样做之后

So the public key is 04 2918 fa7e 0754 b36f 614a e34d 925e 2395 58f0 3969 2d40 493e f714 de65 c1c6 66f6 3400 db57 c193 564a 1349 5dbf 44ac 01f4 511b 90a9 5024 0d83 d6b7 d99a e3b6 8605

但是我有曲线,公钥,我想知道如何生成一个pem?

换句话说,

我有一个 mykey.pub 文件,其中包含:

我执行这个命令来显示公钥:

所以我的问题是我是否有这些数据

如何在 shell 模式下检索它

0 投票
0 回答
906 浏览

oauth-2.0 - 无法验证令牌:无法检索远程 JWK 集

我正在基于 OpenID Connect 的 Nexus 混合访问网关上设置身份验证方法,使用 ADFS 作为身份提供者。目标是使用 OpenID Connect 身份验证方法访问 Nexus Hybrid Access Gateway。

在 Nexus HAG 上配置 OpenID Connect 时,我为身份提供者指定了以下信息:

当我尝试使用 OpenID Connect 身份验证方法登录 Nexus HAG 端口时,我被重定向到“ https://example.com/adfs/ls/idpinitatedsignon ”页面以指定用户凭据。ADFS 能够验证我的凭据,但在我的服务器 (Nexus) 上,我不断收到以下消息:

AUTHENTICATION_MECHANISM:[14] MECHANISM_MESSAGE:[无法验证令牌:无法检索远程 JWK 集:连接重置] RADIUS_REJECT_MESSAGE:[无法验证令牌:无法检索远程 JWK 集:连接重置]

任何帮助都感激不尽。

谢谢。

0 投票
1 回答
436 浏览

jwt - 在将 JWKS 与 Auth0 一起使用时,如果我使用的是 localhost,那么受众和发行者是什么?

我已经在我的 Node Koa 应用程序中实现了 JWT:

这行得通^,现在我正试图让它与Auth0一起工作,所以我调查了JWKS,这就是我所拥有的:

第一个问题:我可以从 localhost 执行此操作,还是必须上传我的代码才能使其工作?

第二个问题:我使用的是 Auth0 在创建帐户时分配给我的 JWKS 端点,我是否可以假设每个帐户只有一个 JWKS 端点,即使该帐户有多个 API?(在这个网站上它说每个租户都有一个,我认为这意味着帐户,但我想确认)

第三个问题:除了受众和发行者之外,这段代码看起来是正确的还是缺少什​​么?

0 投票
0 回答
196 浏览

ios - 如何在 iOS 9 及更高版本上将公共 JWK 用于 ECDH 算法

我在使用 CommonCrypto 的 Objective C 中使用 JWK 格式的公共 EC 密钥时遇到问题。

我有一个 java 示例,说明我在 Objective C 中似乎无法执行的操作。这是从https://static.javadoc.io/com.nimbusds/nimbus-jose-jwt/2.24/的 Nimbus Jose JWT 库中提取的src-html/com/nimbusds/jose/jwk/ECKey.Curve.html

我找不到如何在 Objective C 中实现这一点,因为 CommonCrypto 似乎缺乏 JWK 支持。有谁知道如何从曲线的 x 和 y 值将对方的 JWK 密钥转换为可读格式(.pem、SecKeyRef 或 NSData)?

0 投票
1 回答
1206 浏览

javascript - 如何将 ECDH 密钥对的原始表示形式转换为 JSON Web 密钥?

目前,我正在尝试将通过 ECDH 生成的一对公钥/私钥(表示为十六进制字符串)传递给importKeyWeb Crypto API 的函数。

我从外部源接收这些密钥,但我通过 node.js 生成了类似的密钥进行测试。曲线是prime256v1。作为参考,我用来测试04b71388fced2daee34793f74a7dfa982e37ce539a728233bcadaec298fc4ee422165b8db13e657f9c7b27b35364f523ad11fab29d717606140cc6312ec2c685cc的公钥是 ,私钥是4bd22700ec3450b5f27e47ba70c233a680c981ab02c1432a859ae23111bef377

raw通过选项成功导入公钥importKey

但是,无法通过相同的方法导入私钥,因为它失败并出现错误DataError: Data provided to an operation does not meet requirements,因为“原始”选项只接受 EC 公钥。

我知道如果它是 JSON Web Key 格式,我可以轻松导入密钥,但我不知道将其从原始格式转换为 JWK 格式或 Web Crypto API 接受的任何其他可导入格式的方法.

0 投票
0 回答
96 浏览

javascript - 从文件导入 JWK 签名并验证信息 Web Cryptography API

使用 Web Cryptography API 和 RSASSA-PKCS1-v1_5 算法密钥验证签名失败。

  1. 将使用postgreSQL 中的sign 函数生成的签名保存为字符串:
  1. 我尝试使用我从 postgreSQL 获得的签名来验证:

实用程序:* String -> ArrayBuffer 函数:

  • ArrayBuffer -> HEX 函数:

问题是,即使我使用正确的密钥对进行签名和验证,我也总是得到“假”作为验证功能的响应

0 投票
2 回答
1861 浏览

c++ - 如何在 C++ 中将 JWK 公钥转换为 PEM 格式

是一个在线工具,可将 JWK 转换为 PEM,反之亦然。

我希望在 C++ 代码中也一样。

对于 JWK:

在线工具为 PEM 提供:

反之亦然。因此,ktyandkid字段也以某种方式包含在 PEM 中。

我试过这样的 OpenSSL:

但它给了我一个不同的 PEM,这应该很明显,至少我没有指定kid.

最后,问题是:如何使用 OpenSSL 或其他 C++ lib 实现正确的转换,因此它还将考虑kidkty字段并使用与在线工具提供的相同 PEM 的结果?