问题标签 [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.
oauth-2.0 - 使用 ServiceStack 进行自定义 JWT 验证,无需用户凭据
我是 ServiceStack 的新手,并使用它来提供一个端点,该端点将接收来自远程服务的传入请求。不涉及最终用户。
身份验证流程如下(由远程服务的作者指定):
- “他们的”远程服务调用“我们的”端点,标头中有 JWT
- “我们的”端点从 JWT 中提取“孩子”
- “我们的”端点调用“他们的”oauth 端点,以 'kid' 作为参数
- “他们的”oauth 端点以 JWK (RS256) 的形式返回公钥
- “我们的”端点使用 JWK 验证 JWT 签名
ServiceStack 是否支持此身份验证流程?
我想我需要编写代码来挂钩请求的身份验证并执行上面的步骤 2-5。是对的吗?
编辑: 我发现这个答案看起来就是我所追求的,即使用上面的步骤 2-5 覆盖 PreAuthenticate 的自定义 AuthProvider。
然后在 ApplicationHost.Configure() 中:
这种方法看起来对吗?我需要手动进行 JWT 身份验证,还是可以更多地利用 ServiceStack 的内置功能和插件?
go - Golang rsa-oaep 解密失败,前端使用 webcrypto
我有这个用 Golang 编写的应用程序作为后端,Typescript 作为前端。我需要对传输的数据进行加密所以我选择RSA加密,基本上步骤如下:
* 后端 *
- golang生成私钥和公钥,保存在redis中
- Golang 使用lestrrat-go/jwx/将公钥转换为 JWK(json web key)
- Golang 发送 JWK
* 前端 *
- Typescript 使用 Webcrypto API 导入 JWK 密钥
- Typescript 使用导入的密钥加密一些纯文本
- 加密后,我得到一个 ArrayBuffer,为了防止出现任何编码问题,然后我将 ArrayBuffer 字节转换为整数数组
- 将转换后的整数数组发送到字符串化 JSON 中的后端
* 后端 *
- Golang 接收 JSON 并将整数数组转换为
[]byte
- 从redis中检索私钥然后解密
现在我得到的只是一个decryption error
...
我检查过的事情:
- 后端 Golang 单独加密/解密就好了
- 前端 webcrypto 单独加密/解密就好了
检查 golang rsa.PublicKey -> JWK 期间是否出现任何问题
- 如果前端从后端获取 jwk
- 导入它
- 然后导出
- 将导出的密钥发送回后端
- 后端将jwk转回rsa公钥,等于redis中保存的公钥
后端收到 int 数组并转换为 后
[]byte
,它的长度和内容等于前端的
代码如下:
更新
在此处添加一些打印日志:
- 后端:
- 前端:
validation - 如何在 Dot Net Core 中使用 JWKS 验证 JWT 令牌
在 C# 中,我需要针对 JWKS 验证承载令牌(Json 对象表示如下所示的一组键)
jwt - 当带有 JWKS URL 的验证令牌时,Keycloak 与外部身份提供者的集成失败
我在我的 Keycloak 实例中配置了一个外部身份提供者,并试图让它使用外部 JWKS URL 来验证令牌。使用从 JWKS 转换的 PEM 工作正常,使用 URL 不起作用。
登录时令牌验证失败,并显示以下消息:
我调试了 Keycloak 服务器,获得了更多关于该问题的信息,并在类中发现了一个“问题” JWKSUtils
:
if
失败并带有 a ,NullPointerException
因为调用jwk.getPublicKeyUse()
返回null
。
但我发现这是因为 JWKS URL 返回一个没有属性usenull
的单个键,根据规范,这是可选的。[https://www.rfc-editor.org/rfc/rfc7517#section-4.2]
Keycloak 仅接受 JWKS URL,这些 URL 返回所有已定义属性使用的键。但是我尝试连接的 IdP 不会在密钥中返回该属性。
鉴于这种情况,我应该向谁提出问题,IdP 还是 Keycloak?还是我在配置中做错了什么?
ssl - 如何从以 PEM 格式编码的 CRT 创建 JWKs 密钥
我有一个 CRT 文件:
例子:
我知道这个 CRT 是用 PEM 编码的。但是我想从这个文件创建一个 JWK 密钥我应该怎么做呢?
javascript - JSON Web 密钥的“ext”属性是什么?
我正在使用带有以下代码的浏览器加密 API生成和导出 JSON Web 密钥 (jwk)(请参阅RFC 7517 ) (感谢GitHub 上这个出色的 webCrypto 示例页面):
我得到的是一个带有许多属性的 JSON 对象,与MDN 文档中的非常相似,看起来像这样:
所有上述属性都在上面链接的 RFC 中定义,除了ext
. 我查看了许多来源(包括但不仅是 MDN 和 RFC),但似乎找不到定义。虽然一切都很好,只是按照上面的定义保留它,但我更愿意(特别是对于类似的东西crypto
)知道一切都是为了什么。那么,ext
jwk 属性的目的是什么?
javascript - 如何在 JWK 响应 (PHP) 中获取密钥 ID 值
我在服务器端生成一个公钥以传递给客户端以呈现 iframe(由第三方托管)。
我从 JWK 响应中获取了大量数据,但我只需要keyID值。
{ "数据": "{\"keyId\":\"eyJraWQiOiIzZyIsImFsZyI6IlJTMjU2In0.eyJmbHgiOnsicGF0aCI6Ii9mbGV4L3YxL3Rva2Vucz9mb3JtYXRcdTAwM2RKV0UiLCJkYXRhIjoiOFZ6WnhyUHd2b1dRb1I0QTVTRWNteEFBRUliNlJsT1YzdGU4UUxGdmEwb08wTEliWkhtWmE4Z2ZqT0lSWklmS1FaUElRYmhaZHVlRFNwQzZZZllUanF0cU94d2xtUVlQa1FzZUcrL05WUGlBbUZUdGtUNjlUbXAyb3pEOWJqT0NyVFlQIiwib3JpZ2luIjoiaHR0cHM6Ly90ZXN0ZmxleC5jeWJlcnNvdXJjZS5jb20iLCJqd2siOnsia3R5IjoiUlNBIiwiZSI6IkFRQUIiLCJ1c2UiOiJlbmMiLCJuIjoiaGNLRlU5UllCR0VwY1JyR3FQQ2J1U3BlOFdyeTRRUUNvMUdiRml4ZHdWMUtuN09BMHQtRDdXM2tvUjN6MDc3UndnYnBldTdvbV8xd0ZrRjVRLTBNeVNfdzk3TklmaVk1OVNLb3JqdWhfQmt2NHdJVGVUbm9LN2ZROHJyOTJSOUNKTFp6UFdlUVJPMDVxeWxiLVdVWUJvOU5sa2QwZHl6b2RlbEoxWVRzQ1JzYlRVc0ZRMUxKZHVIWWw0X3kzTF9FbnkwaG1mSFg5cll4U2ozamhmZVpZYVhYa0wtdERCa2k5VF9zXzhzb19RQjNLN29oR2tqSDU1TUQwRkdDNzVpRS1UcmtqNFd0cWNyYjI3S3BNSzdXWm1qSnJUMFE0bzlMMTBURXJvZE1HeEpfTm5IMGdSYmUwTFVSOWhaVnUzMG9tWkdrQVhfQXhUa1VJWktXQzZENkJ3Iiwia2lkIjoiMDd1SlMwT0dpR2pObzF6ejRTbGFpZUIzQkprSWc1bVAifX0sImN0eCI6W3siZGF0YSI6eyJ0YXJnZXRPcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MiJdLCJtZk9yaWdpbiI6Imh0dHBzOi8vdGVzdGZsZXguY3liZXJzb3VyY2UuY29tIn0sInR5cGUiOiJtZi0wLjExLjAifV0sImlzcyI6IkZsZXggQVBJIiwiZXhwIjoxNTgwMTg5NDA2LCJpYXQiOjE1ODAxODg1MDYsImp0aSI6InNYYWNWSm43bkI1a1ZvSnIifQ.Hr-DwfFv-90bBtUWhACXwkhVFefh7fNOV9FS5Epu5fcL7Ji_pE9GHQIhaX5F31VM-EAOz55gG0eYnEu7ZAptR1mq3WgxNx3Af9ngKpbl4ZTb9cUxjGf3DdGJ1-J26aziJx3GcaZREfFyabDWbThyKlGTxSbnGHb7-UcQ_MPmh-znt_691y_gX9Qo8fe6XeJw8-Ir4XwwznjNLa31-EctYfnYUbfOnjR_8rfuFNnulvQecHs1e4zFVVAqm8mqex-umdlPbPUGT8xzYN-G0oLMdj3uMAAeSuyrdAifVXWSXyyyBHU5rIp-8anGWj_9RQrwvOH7MOIerV3Lej1-lEOxTw\",\"der\":null,\"jwk\":null}" }}}Hr-DwfFv-90bBtUWhACXwkhVFefh7fNOV9FS5Epu5fcL7Ji_pE9GHQIhaX5F31VM-EAOz55gG0eYnEu7ZAptR1mq3WgxNx3Af9ngKpbl4ZTb9cUxjGf3DdGJ1-J26aziJx3GcaZREfFyabDWbThyKlGTxSbnGHb7-UcQ_MPmh-znt_691y_gX9Qo8fe6XeJw8-Ir4XwwznjNLa31-EctYfnYUbfOnjR_8rfuFNnulvQecHs1e4zFVVAqm8mqex-umdlPbPUGT8xzYN-G0oLMdj3uMAAeSuyrdAifVXWSXyyyBHU5rIp-8anGWj_9RQrwvOH7MOIerV3Lej1-lEOxTw\",\"der\":null,\"jwk\":null}" }Hr-DwfFv-90bBtUWhACXwkhVFefh7fNOV9FS5Epu5fcL7Ji_pE9GHQIhaX5F31VM-EAOz55gG0eYnEu7ZAptR1mq3WgxNx3Af9ngKpbl4ZTb9cUxjGf3DdGJ1-J26aziJx3GcaZREfFyabDWbThyKlGTxSbnGHb7-UcQ_MPmh-znt_691y_gX9Qo8fe6XeJw8-Ir4XwwznjNLa31-EctYfnYUbfOnjR_8rfuFNnulvQecHs1e4zFVVAqm8mqex-umdlPbPUGT8xzYN-G0oLMdj3uMAAeSuyrdAifVXWSXyyyBHU5rIp-8anGWj_9RQrwvOH7MOIerV3Lej1-lEOxTw\",\"der\":null,\"jwk\":null}" }
我需要 keyID 值并将其传递给客户端的一个名为“captureContext”的变量。
这是我的客户端代码,但它向我返回了上面的所有数据:
这就是我在服务器端生成公钥的方式:
希望你能帮帮我!先感谢您!
c# - 使用 JWK 签名创建 JWT
我正在使用 .Net Framework 学习令牌。我似乎找不到的一件事是如何创建一个带有 JWK 签名的令牌。我发现大量文章解释了如何使用 JWKS 验证 JWT,以及如何使用 RSA 或 HMAC 签署 JWT。
我尝试使用像 BouncyCastle 和 jose-jwt 这样的库,但是 JWK 的格式编码不同,并且不会被接受。我使用 ssh-keygen RSA 密钥成功创建并签名了令牌,但我无法从这些密钥中获取用于解码的 CRT 变量。
我希望只使用 JWK 生成的密钥并使用它们,就像我使用 ssh-keygen 一样