【问题标题】:JWE Decryption does not work for me with jose jwtJWE 解密不适用于 jose jwt
【发布时间】:2019-11-20 15:18:01
【问题描述】:

我在 C# 上使用 Jose-Jwt 许可证,并且我有以下代码:                  

private string DecodeJWT(string token)
{
    string privateKeyPath = ConfigurationManager.AppSettings["PrivateKey"];
    var privateRSA = RsaProviderFromPrivateKeyInPemFile(privateKeyPath);           
    string json = Jose.JWT.Decode(token,privateRSA, Jose.JweAlgorithm.RSA_OAEP, Jose.JweEncryption.A256GCM);
    return json;
}


private RSACryptoServiceProvider RsaProviderFromPrivateKeyInPemFile(string privateKeyPath)
{
     using (TextReader privateKeyTextReader = new StringReader(System.IO.File.ReadAllText(privateKeyPath)))
     {
         PemReader pr = new PemReader(privateKeyTextReader);
         RSAParameters rsaParams = DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)pr.ReadObject());
         RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
         csp.ImportParameters(rsaParams);
         return csp;
     }
}

但是我没有设法解密加密的字符串。它在解码后返回相同的加密字符串。谁能告诉我可能做错了什么?我实际上正在遵循Q/A的建议

这似乎对我不起作用。 :(

【问题讨论】:

    标签: c# encryption jwe


    【解决方案1】:

    我发现解码确实有效。但我需要使用公钥进一步解密数据。

    RSACryptoServiceProvider publicRSA = RsaProviderFromPublicKeyInPemFile(publicKeyPath);

            var validationParameters = new TokenValidationParameters()
            {
                RequireExpirationTime = false,
                RequireSignedTokens = true,
                ValidateAudience = false,
                ValidateIssuer = false,
                IssuerSigningKey = new RsaSecurityKey(publicRSA)
            };
    
            IdentityModelEventSource.ShowPII = true;
            var result = handler.ValidateToken(decryptedresult, validationParameters, out var validatedToken);
    

    但是系统抛出 {"IDX10501: 签名验证失败。无法匹配密钥:\nkid: 'C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI'。\n捕获的异常:\n ''。\ntoken: {"IDX10501: 签名验证失败的。无法匹配键:\nkid: 'C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI'。\n捕获的异常:\n ''。 \ntoken: '{\"alg\":\"RS256\",\"kid\":\"C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI\"}.{\"uinfin\":{\"lastupdated\":\" 2019-11-13\",\"来源\":\"1\",\"分类\":\"C\",\"值\":\"S9812381D\"}....

    但是,我可以在错误消息中看到已解密的有效负载。我被困在如何处理这个 Unable to match key 错误。

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 1970-01-01
      • 2022-10-31
      • 2018-07-17
      • 2020-12-24
      • 2014-12-23
      • 2015-11-03
      • 2020-01-08
      • 2018-10-17
      相关资源
      最近更新 更多