【问题标题】:How to generate Encrypted JWT token in c#如何在 C# 中生成加密的 JWT 令牌
【发布时间】:2017-12-02 07:30:19
【问题描述】:

使用下面的代码,我可以生成加密的 JWT 令牌。但它给出了 5 个部分。我只需要3个部分。所以任何可以帮助我获得所需的代码。

  var jwt = new JwtSecurityToken(
                issuer: "asds",
                audience: "sds",
                claims: cliams,
                notBefore: DateTime.Now,
                signingCredentials: signingCredentials,
                expires: DateTime.Now.AddHours(1)



                );


            var ep = new Microsoft.IdentityModel.Tokens.EncryptingCredentials(securityKey1, Microsoft.IdentityModel.Tokens.SecurityAlgorithms.Aes256KW, Microsoft.IdentityModel.Tokens.SecurityAlgorithms.Aes256CbcHmacSha512);
            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
            var a = tokenHandler.CreateJwtSecurityToken("issuer", "Audience", new ClaimsIdentity(cliams), DateTime.Now, DateTime.Now.AddHours(1), DateTime.Now, signingCredentials, ep);
            string tokenString2 = tokenHandler.WriteToken(a);

            Console.WriteLine("Token string: {0}", tokenString);


            var encodedtext = new JwtSecurityTokenHandler().WriteToken(a);

【问题讨论】:

  • 我们如何知道您想要哪 3 个部分?需要更多信息。

标签: c# encryption jwt


【解决方案1】:

我假设您指的是紧凑的序列化格式......对吗?根据这个假设,我建议您检查为什么要创建加密 JWT 而不是您预期的签名 JWT。


来自JSON Web Signature (JWS) RFC

在 JWS 紧凑序列化中,JWS 表示为串联:BASE64URL(UTF8(JWS Protected Header)) || '。 || BASE64URL(JWS 有效负载) || '。 || BASE64URL(JWS 签名)


... 生成一个包含三个部分和两个分隔符的 JWT。

来自JSON Web Encryption (JWE) RFC

JWE 紧凑序列化将加密内容表示为紧凑的 URL 安全字符串。这个字符串是:BASE64URL(UTF8(JWE Protected Header)) || '。 || BASE64URL(JWE 加密密钥) || '。 || BASE64URL(JWE 初始化向量) || '。 || BASE64URL(JWE 密文) || '。 || BASE64URL(JWE 认证标签)

... 生成一个包含五个部分和四个分隔符的 JWT。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 2019-10-13
    • 2019-07-25
    • 2018-08-29
    • 2021-07-29
    • 2018-11-25
    • 2020-06-26
    • 2023-01-14
    相关资源
    最近更新 更多