我已经尝试了几天,以在.net core 2.1 Web服务中使用jwt令牌。令牌以SecurityTokenInvalidSignatureException: IDX10503: Signature validation failed.
异常被拒绝。
我的设置非常简单:
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(configureOptions => {
configureOptions.ClaimsIssuer = "http://localhost/";
configureOptions.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String("zeey+h0M8mvWSR9HYKlNns+....")),
ValidateIssuer = true,
ValidIssuer = "http://localhost/",
ValidateAudience = true,
ValidAudience = "efb4f12d020b434c9b531af96263b3fa",
};
});
将我收到的令牌放入https://jwt.io/中,发现签名有效:
但是我的Web服务仍然拒绝确认令牌。
我在做什么错了?
答案 0 :(得分:0)
我终于找到了解决问题的答案:
我的密钥错误。但是即使使用正确的密钥,我仍然会遇到相同的错误...
在构造SymmetricSecurityKey
时,我不得不使用Encoding.Unicode.GetBytes(...)
而不是Encoding.ASCII
或Encoding.UTF8
。
我在使用jwt.io时仍然遇到麻烦。我想这个网站不再是验证令牌的好地方。