如何在c#中生成加密的JWT令牌

时间:2017-06-28 19:18:51

标签: c# encryption jwt

使用以下代码,我可以生成加密的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);

1 个答案:

答案 0 :(得分:0)

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

来自JSON Web Signature (JWS) RFC

  

在JWS Compact Serialization中,JWS表示为串联:BASE64URL(UTF8(JWS Protected Header))|| '' || BASE64URL(JWS有效载荷)|| '' || BASE64URL(JWS签名)

...导致JWT有三个部分和两个分隔符。

来自JSON Web Encryption (JWE) RFC

  

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

...导致JWT有五个部分和四个分隔符。