C# DNX Core 5.0 JwtSecurityTokenHandler“;IDX10640:不支持算法:';http://www.w3.org/2001/04/xmldsig-more#hmac-sha256&x27&引用;

C# DNX Core 5.0 JwtSecurityTokenHandler“;IDX10640:不支持算法:';http://www.w3.org/2001/04/xmldsig-more#hmac-sha256&x27&引用;,c#,json,jwt,adal,C#,Json,Jwt,Adal,我正在尝试实现JWT令牌,但始终遇到以下异常:IDX10640:尝试将令牌写入压缩json字符串时不支持算法:“” const string issuer = "issuer"; const string audience = "audience"; byte[] keyForHmacSha256 = new byte[32]; new Random().NextBytes(keyForHmacSha256); var claims = new List<Claim> { new

我正在尝试实现JWT令牌,但始终遇到以下异常:IDX10640:尝试将令牌写入压缩json字符串时不支持算法:“”

const string issuer = "issuer";
const string audience = "audience";
byte[] keyForHmacSha256 = new byte[32];
new Random().NextBytes(keyForHmacSha256);

var claims = new List<Claim> { new Claim("deviceId", "12") };
var now = DateTime.UtcNow;
var expires = now.AddHours(1);
var signingCredentials = new SigningCredentials(
    new SymmetricSecurityKey(keyForHmacSha256), 
    SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest);

var token = new JwtSecurityToken(issuer, audience, claims, now, expires, signingCredentials);
return _tokenHandler.WriteToken(token);
const string issuer=“issuer”;
const string audience=“观众”;
byte[]keyForHmacSha256=新字节[32];
新的Random().NextBytes(keyForHmacSha256);
var索赔=新列表{新索赔(“deviceId”,“12”)};
var now=DateTime.UtcNow;
var expires=now.AddHours(1);
var signingCredentials=新的signingCredentials(
新的对称安全密钥(keyForHmacSha256),
SecurityAlgorithms.hmacsha256签名,SecurityAlgorithms.sha256摘要);
var token=新的JwtSecurityToken(发行人、受众、声明、现在、过期、签名凭证);
return\u tokenHandler.WriteToken(令牌);
有什么办法解决这个问题吗

更新1:

上面的错误出现在“System.IdentityModel.Tokens.Jwt”中:“5.0.0-beta7-208241120”

更新2:


更新的代码

我们现在不支持对称密钥。希望能尽快得到支持。

RC2版本将提供支持。 使用来自的每晚nuget软件包进行测试

只有轻微的代码更改才能让一切正常工作

const string issuer = "issuer";
const string audience = "audience";
var keyForHmacSha256 = Encoding.ASCII.GetBytes("<tokenSecret>");
var key = new SymmetricSecurityKey(keyForHmacSha256);
var claims = new List<Claim> { new Claim("deviceId", "12") };
var now = DateTime.UtcNow;
var expires = now.AddHours(1);
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HMAC_SHA256);

var token = new JwtSecurityToken(issuer, audience, claims, now, expires, signingCredentials);
return _tokenHandler.WriteToken(token);

我也遇到了同样的问题。您正在使用
System.IdentityModel.Tokens.Jwt
库的
5.0.0-beta7-208241120
版本吗?是的,很高兴听到我不是唯一一个…1)为什么要使用
System.Random
创建加密密钥?2) 128字节的密钥没有意义。您想要128位密钥(16字节)吗?256位/32字节也是明智的选择。3) 使用本地时间也很奇怪。1)为了简化代码,我写道2)128/256位密钥修复时也会发生错误3)请参见下面Brent的回答和状态:
SecurityToken securityToken;
var validationParameters = new TokenValidationParameters
{
    ValidateLifetime = true,
    ValidateAudience = true,
    ValidateIssuer = true,
    RequireExpirationTime = true,
    ValidateSignature = true,
    ValidAudience = audience,
    ValidIssuer = issuer,
    IssuerSigningKey = key,
    RequireSignedTokens = true,
    ValidateIssuerSigningKey = true               
};

tokenHandler.ValidateToken(token, validationParameters, out securityToken);