问题标签 [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.
c# - 从 KeyPair 字符串签名和加密
我是 jwt 的新手,在阅读了很多网页后,我没有找到如何使用从该网站生成的密钥对生成令牌(签名和加密)的示例https://mkjwk.org/。我认为这不会很困难。我认为这是生成签名令牌的方式(我不知道它是否正确):
我得到了一个令牌(我认为是签名的),但是如果我将此令牌放在这个网站https://jwt.io/中,我会收到一个错误“无效签名”。我也想用公钥加密这个令牌。所以我这样做:
但我总是收到错误“RsaKeyManagement alg 期望密钥为 RSACryptoServiceProvider 类型。”。我已经搜索过这个错误,但我没有什么清楚的。拜托,有人可以帮助我吗?我不确定我是否走对了路。
我将 jose-jwt 用于 .net,因为我读过库 System.IdentityModel.Tokens.Jwt 无法加密。
谢谢你。问候。
c# - Jose-JWT 中的公钥加密
我认为这个问题不是骗人的,所以我将尝试解释我的情况。
我正在测试 JWT,更具体地说是来自 Github的 JOSE-JWT 库,好吧,我遇到了麻烦。
我正在使用 PHP 和phpseclib生成一个私钥-公钥对并将公钥发送给客户端。如您所见,一切都是正确的。我的客户正在接收 JSON 并将其转换为对象并使用JSON.NET将其提取为字符串。
我正在使用BouncyCastle和 Stackoverflow 的答案,稍作修改即可直接从字符串中读取,而不是从文件中读取。
他们都给我带来了问题,答案和使用来自 Jose repo 的文档:
例外:
等效英文: http: //unlocalize.com/es/74799_Keyset-does-not-exist.html
还有充气城堡:
例外:
从这里提取的CreateToken方法:https ://stackoverflow.com/a/44857593/3286975
我对这个方法做了一点修改:
在这两种情况下,就像加密器方法正在寻找私钥(在客户端客户端????)......所以,我的问题是为什么这个例子在客户端使用私钥,如果维基百科这么说:
来源: https ://en.wikipedia.org/wiki/Public-key_cryptography
在几种情况下,我发现我认为是正确的:
https://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption
在这个 Java 示例中,这使用公钥来加密数据,而不是私钥。
我不知道为什么 C# 示例在客户端使用私钥,这是不合逻辑的,有人可以解释我为什么,我该如何解决这个问题?
c# - 在客户端和服务器之间生成相同的 JOSE 令牌 (PHP-C#)
好吧,我正在尝试使用这两个库生成相同的密钥:
我已经实现了两个:
在 C# 中:
这就是我加载公钥 PEM 字符串的方式:
这就是它返回的内容:
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.L3Teg2RSXXpp4jakLkl2PQgidJ5BIXyP5QZM2B4RaO0vs55aT22D9_dPl6d83KvXezM4YkOnyoF0JA0eLX3k8W4eWkHUhgoYqxgwQSWWhjrpDxcpNdXbDlB6zVb_BKf5upro5qm23nr_SOkkqhKJGrw_sIXvD1LjOburLolDqojrnvK5awGtiFwkPZjRh_wh4z4buEfYsWJCKhTLU6aG_DipmbAXq1o9u1-cqiQJC0JlPJRbh6JJDmVc9YqBv0W0rFEa7W5HA12TO-RtV42tEPApr3hNmD8QwzvxxZYKpMzoBAsSQcvSKk878qeOAcx3pZyoDZ6WzD-LRusWy7nJwOa6AC9NsL91mv8WsZxWar9AnzOsKleSJ7k8I477pXE_H1g7XnFBgmA4egF-721sa7SO2LtS440v1ytA4504sdjVYeOfWmRSU4UljnUqaYTd031fzCevzNEO0Q7mncn-sJACVHiwQB9c703SvYZaFOyzU-vdXUqBRTR6x0JvQd_lFNgSS9pOQC5BQbAKOME9fjdXiwRUKfyHXCUAUj88CJEMqxg3_VYYfUC04GahmoysR9QUpK3l84Z5TLOi47SvO-NkR-2wf7v4ko8bZIR3E6XFHFG9lWwdzR_JPz7fm0OFiYB0HN8XgWE4bQ2tasYsmFhWVfkeRZodnlqFvImSNjA.GIGFv4h_nYkpBiA5.1_66eMEb.BJTezaLucvfluWQ8VEzgCQ
在 PHP 中:
那么,PHP 实现如下:
它们是相似的代码,不是吗?
但是输出不同:
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00iLCJ6aXAiOiJERUYifQ.jbNHUCuXYcXZWrHsJrPclV-fjYmFWwwPj4t3kAOt7PahQfsz0a1GaRrODcwKce4yRtLyjv2U7CtFMxt9ah3XTwIqm1mzzPMhO4LnFIRqMRgsxEgIijRqNOOpE85M3UPBRqjYw0wdjaqfJToLVLwaHgUPCkOqsHrdOOWkxN20fZYy4Z1PQAC0rk2WqLD0x7Za1jdV6LvVtd18iFIaRqf2uNYcRePdyInRxwHGp9JfRkVCQILTfwHlxQBKrwJxhZOzdHrjjNjxNsjAsHGMix6MAbUR0YT4hlrE59eriDVxix4uQrrChuzWVz_kY9-zvB9SDZnYDdfgONYUgTMpbkMTVWsF40JmWJ6wvGs3HaaIxN17UjQLemKgrS4-bqvbnschhZTIGi5-f8Cr_SwGo411VNYhNpD4P1H2dEjmAFpn3SdW3Oi6pPgK2tvIpEwGUS-Gi29-aCCNeuyE2m5dbFW28G9HMmvZHAky4KHE4NlNJTrH0aBxQX_Gc7eTf9q00gJtKQ5CinXaUYAB0xSEbsNACZuFLPawuxj_3FGn6dHYFOkSsatCTcqV5tiGJXG6ns-wDc682-G9Mj8HCIzYzakp-yZLIaY00fg5xQdgKJrk0QbCtvbwiQGoupyMV9f3RpEBJznPrq4STypxskdh6jksB6T_1fhPqZMVt2BHR4phCBg.9380DJUDH4TQnnr7.zEuMQwRr.BfdStBMcVnVR-2ujTLjuaA
你可以在这里看到不同之处:
左边是 C#,右边是 PHP。你可以在那里看到它:http: //qbz28b-user.freehosting.host/html/Result.html
显然,当我尝试用 PHP 解密用 C# 生成的文本时...
...在PHP中解密的实现:
出现以下异常:
致命错误:未捕获的 InvalidArgumentException:无法解密 JWE。在 C:\xampp\htdocs\z3nth10n-PHP\libs\jose\Decrypter.php:80 堆栈跟踪:#0 C:\xampp\htdocs\z3nth10n-PHP\libs\jose\Loader.php(95): Jose\ Decrypter->decryptUsingKeySet(Object(Jose\Object\JWE), Object(Jose\Object\JWKSet), NULL) #1 C:\xampp\htdocs\z3nth10n-PHP\libs\jose\Loader.php(30): Jose \Loader->loadAndDecrypt('eyJhbGciOiJSU0E...', Object(Jose\Object\JWKSet), Array, Array, NULL) #2 C:\xampp\htdocs\z3nth10n-PHP\includes\actions.php(321): Jose\Loader->loadAndDecryptUsingKey('eyJhbGciOiJSU0E...', Object(Jose\Object\JWK), Array, Array, NULL) #3 C:\xampp\htdocs\z3nth10n-PHP\api.php(9): 包括('C:\xampp\htdocs...') #4 {main} 在第 80 行的 C:\xampp\htdocs\z3nth10n-PHP\libs\jose\Decrypter.php 中抛出
我一直在查看代码很长时间,我意识到问题不在于代码,问题在于生成的令牌。而且我不知道我能做什么,你可以在这里测试一下。
编码一个词...
...然后,解密它。
有什么建议可以看吗?
java - JOSEException:无法创建 AES/GCM/NoPadding 密码:非法密钥大小
我正在尝试使用 Nimbus JOSE + JWT 从我的私钥中解密 JWE 数据。
但是我遇到了错误:JOSEException:无法创建 AES/GCM/NoPadding 密码:非法密钥大小
有人可以帮我解决这个问题。我正在使用 Java 1.8
我的私钥
我的 JWE 数据
我的数据解密代码
获取RSA私钥的代码
Maven依赖
ios - JOSESwift jwe 加密未能在 nimbus 服务器中解码
有人成功使用过 JOSESwift 吗?在我的情况下,服务器中的解密失败,可能找不到匹配的私钥或加密错误。收到错误 500。
我的代码是从服务器获取公钥。
服务器期望 jose 标头中有一个“kid”字段,而框架中缺少该字段。所以我添加了它......后端Java服务器使用nimbus库。
我究竟做错了什么?
json - 受保护的标头 JWS
我试图理解这篇关于 JOSE 的博客文章。在关于 JWS 的部分中,它说如下:
在受保护的标头中包含公钥不仅可以使服务器能够验证签名,而且我们还将确保它是正确的,因为受保护的标头是完整性保护的!
这是示例对象的样子:
受保护的标头是以下base64url
编码:
我能找到的将公钥放入其中的唯一参考是使用 key id 字段kid
,如下所示:
这是帖子所指的吗?还是它指的是其他东西(例如将整个公钥放入受保护的标头中:
json - 结合 JWE 和 JWS
刚刚了解了 JOSE,我知道 JWE 用于加密,JWS 用于签名。我似乎无法找到一个既加密又签名的有效负载示例。
假设我有一个 payload hello world
。做这样的事情是正确的吗?JWS(JWE('hello world')
将加密的 JWE 作为 JWS 的有效负载?
node.js - 从 Promise 中获取结果 - Nodejs
我正在将 nodejs 与这个库 node-jose 一起使用,以允许我获取我的私钥并使用它来签名和/或解密。
所以现在的问题是这样的。我试图在生成结果后从结果中返回签名,但无法这样做。
在A 点,当我执行 console.log 时,我将真正看到我的结果。除此之外,即在B 点,我无法看到我的结果。我得到的只有这个。
我做事的方式正确吗?
主.js:
jwt - 如何在 nimbus-jose-jwt 中使 RemoteJWKSet 的缓存无效
我们正在使用nimbus-jose-jwt 第三方库中的 RemoteJWKSet 进行基于 JWKS 端点的 JWT 验证。
使用 RemoteJWKSet,我们可以从远程端点检索 JWKS,并缓存检索到的 JWK 集,以最大限度地减少网络调用。它还能够在远程服务器上处理密钥轮换,因为每当密钥选择器尝试获取具有未知 KID 的密钥时,缓存都会更新。
我的问题是,假设由于安全原因,从远程 JWKS 端点中删除了一个特定的密钥集。但是当我们得到一个使用移除的密钥签名的 JWT 时,它仍然是有效的,因为该密钥集在缓存中可用(RemoteJWKSet 只会在它获得具有未知 KID 的令牌时更新缓存)。
我需要知道是否有任何可能的方法来使 RemoteJWKSet 中的缓存 JWK 集无效(如果需要重新启动服务器)?
wso2 - wso2am-2.6.0 无效的 jwt 签名
在 WSO2AM-2.6.0(6.x 分支)中为后端服务启用 JWT 签名
但是 - 开发人员抱怨签名无效(根据 JOSE 库)。我在jwt.io页面中测试了令牌,它还声称签名无效。
我从以前的版本(wso2am-2.1.0)中看到签名生成发生了变化(不使用任何外部框架),但是对于更改,其他框架(jose,jwt.io)认为签名无效
有什么方法可以配置 wso2am 以创建有效(有效)签名?
编辑:
我看到 JWT 令牌仅使用 APIMJWTGenerator 进行签名,尽管它无助于使令牌有效
例外是
验证是否与x5t标头属性有关?
Edit2:显然 xt5t 标头应包含 SHA-1 证书签名,提供的值NTA3YzJmZDk0OTg4N2ViNWRlY2M4N2NlMDdjMmNlNjliOTRkYjM1OA
太长而不能成为 SHA-1 或无效
编辑3:
似乎问题与https://github.com/wso2/carbon-apimgt/issues/5535有关,该修复显然破坏了与后端服务的兼容性(以及使用的框架,准备修复)