C# DNX Core 5.0 JwtSecurityTokenHandler“;IDX10640:不支持算法:';http://www.w3.org/2001/04/xmldsig-more#hmac-sha256&x27&引用;
我正在尝试实现JWT令牌,但始终遇到以下异常:IDX10640:尝试将令牌写入压缩json字符串时不支持算法:“”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
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);