JWT - 如何将PrivateKey传递给“SigningCredentials”来构建SecurityTokenDescriptior?

时间:2017-04-12 14:33:31

标签: c# jwt

我正在使用c#.NET创建JWT令牌。我有自己的私钥作为xml。我需要将其作为参数之一传递给函数signingCredentials。我的代码如下所示:

            var securityTokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject = new ClaimsIdentity(List),
                Audience = "Audi",
                Issuer = "Issr",
                Expires = 5,
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Key), Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature),
            };

想知道如何传递SigningCredentials的私钥。

我有自己的私钥作为标签RSAKeyValue之间的xml文件。

感谢。

3 个答案:

答案 0 :(得分:2)

尝试使用Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(byte [] key):

new SigningCredentials(new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes(Constants.Commons.SECRET_KEY)), Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256)));

答案 1 :(得分:0)

如果您拥有带私钥的证书 - PKCS#12那么它将是easy

new SigningCredentials(new X509SecurityKey(cert), "RS256");

所以申请证书。

答案 2 :(得分:0)

  1. 我们制作对称安全密钥并分配您的“秘密密钥”
  2. 然后我们创建一个 SigningCredentials 实例并传递我们创建的密钥和我们想要使用的算法
  3. 然后我们只需将我们的凭据分配给 SecurityTokenDescriptor 中的 SigningCredentials 属性

下面的示例代码

var key = new SymmetricSecurityKey(Encoding.UTF8
                .GetBytes(_configuration.GetSection("AppSettings:Token").Value));

var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
    
var tokenDescrpitor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };