问题标签 [jwe]

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

c# - 如何在 Startup.cs 文件的 ConfigureServices 方法中的 AddJwtBearer 选项中设置 Dynamic IssuerSigningKey 和 TokenDecryptionKey

我用和编写了一个身份验证web api项目。DotNet core 3.1Microsoft.IdentityModel.JsonWebTokens

我有 3 个客户app-androidapp-pwa并且admin-panel. 每个客户都有特定的SigningCredentialsEncryptingCredentials关键的数据库。

当我想生成访问令牌时,我使用这些客户端之一。

Startup.cs文件中我需要设置AddJwtBearer选项

但我需要为每个客户端动态设置这些键

我怎样才能做到这一点?

谢谢

0 投票
2 回答
728 浏览

c# - 如何在 Angular 中解码 JWE 令牌

我有这个问题,我通过这种方式使用 EncryptingCredentials 在 .net 核心中创建了一个 JWE:

如何使用 Angular 读取令牌的数据?

0 投票
0 回答
82 浏览

security - JWE 和密钥管理模式

围绕 JWE 和密钥管理模式展开我的思考。JWE 的目的是防止第三方看到/更改令牌。只有令牌颁发者和资源服务器应该能够使用它。(这是正确的吗?

要加密令牌的有效负载,我们需要生成 CEK(内容加密密钥)。此密钥提供给“enc”JOSE 字段中指定的对称算法。根据https://www.rfc-editor.org/rfc/rfc7516,我们有 5 种方法可以获得 CEK。

  1. 密钥加密。CEK 是随机生成的,负载使用 CEK 加密,CEK 使用非对称算法 - 公钥加密 - 根据“auth”JOSE 字段,并嵌入到令牌中。资源服务器可以发现-推断出对应的私钥,并使用非对称算法对 CEK 进行解密。资源服务器可以通过多种方式发现对应的公钥。其中之一是 JOSE 标头中的 jkw。jkw 表示对应的公钥。
  2. 密钥包装。CEK 是随机生成的,负载使用 CEK 加密,CEK 使用对称算法加密,并嵌入到令牌中。
    在这种情况下,资源服务器如何破译 CEK?
  3. 直接密钥协议。CEK 是根据密钥协商算法决定的。
    在这种情况下,发行者和资源服务器是否一起工作以首先获得 CEK?他们是否会在生成 CEK 之前保持会话一段时间?这不规范吗?
  4. 与密钥包装的密钥协议。CEK 是随机生成的。
    那我们为什么要提到关键协议呢?
  5. 直接加密。CEK 带外交换。

感谢您的任何反馈。

0 投票
2 回答
176 浏览

rsa - 如何使用 RSA 作为 kty jwk 参数(使用 jose4j)

我正在使用jose4jJWE 加密字符串,遵循此文档https://bitbucket.org/b_c/jose4j/wiki/JWE%20Examples

在示例中,他们使用{\"kty\":\"oct\",\"k\":\"Fdh9u8rINxfivbrianbbVT1u232VQBZYKx1HGAGPt2I\"}

它运作良好,但如何使用 RSA 作为 kty ?我应该自己生成一个密钥并将其放入“k”参数中吗?

0 投票
1 回答
273 浏览

php - 找不到类 'phpseclib\Crypt\Random'

我想在 php 中做 JWE。我已经通过 composer 安装了 gree/jose 库和 phpseclib。但是,为什么我在下面不断收到错误?

致命错误:在第 106 行的 /export/vhost/onlinepayment.com.my/htdocs/NBepay/vendor/gree/jose/src/JOSE/JWE.php 中找不到类 'phpseclib\Crypt\Random'

下面是我安装的库。

  1. 作曲家需要格力/何塞
  2. 作曲家需要 phpseclib/phpseclib:~3.0

已经包括自动加载和 JOSE。

我应该怎么办?

0 投票
0 回答
272 浏览

c# - Private key in CngKey format using jose-jwt - EccKey.New(x, y, d, CngKeyUsages.KeyAgreement) not working in production but fine in local

I'm trying to read get the x, y and d parameter values from a pem file generated using https://mkjwk.org/ with P 256 curve, Encryption, ECDH-ES+A128KW with X509 set to true. The values for x, y , d are retrieved using below:

But the statement below is throwing exception when executed in remote server with Windows Server 2012 but running fine in local system running on Windows 10:

The exception found in remote is given below:

The requested operation is not supported at System.Security.Cryptography.NCryptNative.ImportKey(SafeNCryptProviderHandle provider, Byte[] keyBlob, String format) at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, String curveName, CngKeyBlobFormat format, CngProvider provider) at Jose.keys.EccKey.New(Byte[] x, Byte[] y, Byte[] d, CngKeyUsages usage)...

I am using the below library for my purpose: https://github.com/dvsekhvalnov/jose-jwt

0 投票
0 回答
385 浏览

node.js - JWT 解密加密令牌

我正在处理一些 oauth 身份验证,并且收到了以下格式的回复:

id_token 应该只是一个 jwt 令牌。但是,如果我将令牌放入 jwt.io,它会显示无效的 json 对象。

我已与我的供应商核实,他说 id_token 已在我为供应商创建的此链接上使用此公共 jwks 密钥 (enc) 加密。 http://singpasslogin.herokuapp.com/jwks

由于这个 id_token 已被加密,我现在如何解密它,我正在使用 jsonwebtoken 但不知何故我找不到任何可以用来解密它的相关方法。

通常我们会做这样的事情来获取有效载荷,但现在这不起作用。

现在 id_token 已加密,我现在应该如何读取这个 id_token?我的供应商说用户名在我收到的响应的 id_token 中,但不知何故我不知道如何阅读它。

任何帮助或解释将不胜感激。

0 投票
1 回答
81 浏览

jwe - 如何从 JSON 网络密钥生成 jose4j EllipticCurveJsonWebKey

我可以按照https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples创建 JWE 。 问题:无法使用 json web 密钥创建 JWE(如下所述的 EC 类型)。

要求:创建并验证以下类型的 JWE

我想避免EcJwkGenerator.generateJwk(EllipticCurves.P256);

我可以从 json 网络密钥创建 EllipticCurveJsonWebKey 吗?

这是 json 网络密钥:

0 投票
1 回答
79 浏览

jwt - 从 JWT 迁移到 Identity Server 4,部署后无需重新登录网站用户

我有一个当前使用JWT保护的 API 服务。我将用 Identity Server 4 替换 JWT,并用Identity Server 4保护我的 API。我有一种生成 JWT 令牌 (JWE) 的自定义方式。如何在当前登录到站点的用户无需重新登录的情况下将 JWT 替换为 Identity Server 4

具体来说,我想使用Skoruba Identity Server 4项目模板。

0 投票
0 回答
242 浏览

json - 有没有办法使用 .Net 框架创建加密的 JWT,以替代使用 jose-jwt 之类的库?

我有一个 ASP.Net 应用程序,我正在使用这个库:https ://github.com/dvsekhvalnov/jose-jwt创建一个加密的 JWT,如下所示:

publicKey只是我从公共 JWK 创建的 RSA 密钥

我想知道是否有一种方法可以通过使用普通的 .Net Framework 而不是这个库来生成相同格式的加密 JWT。我尝试使用Microsoft.IdentityModel.TokensSystem.IdentityModel.Tokens命名空间,例如:

但是我意识到这个方法的输出与 jose-jwt 库的Encode方法产生的输出格式不同。我是否遗漏了什么,或者这不是在.Net 中创建相同加密 JWT 的方法?

当我尝试使用相同的jose-jwt库来解密上面生成的 JWT 时,而不是获取解密的有效负载(“some_text_to_encrypt”),我得到另一个 JWT,其有效负载中的值:

Result after decrypting: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ2YWwiOiJzb21lX3RleHRfdG9fZW5jcnlwdCIsIm5iZiI6MTYxODkzNjk0NywiZXhwIjoxNjE4OTQwNTQyLCJpYXQiOjE2MTg5MzY5NDIsImlzcyI6Iklzc3VlciIsImF1ZCI6IkF1ZGllbmNlIn0.

然后我可以在jwt.io中解码以获得以下结果:

标题:{“alg”:“none”,“typ”:“JWT”}有效负载:{“val”:“some_text_to_encrypt”,“nbf”:1618936947,“exp”:1618940542,“iat”:1618936942,“iss ": "发行者", "aud": "受众" }