使用AddJwtBearer()消费令牌-无法验证签名

时间:2018-08-03 12:25:49

标签: c# .net asp.net-core jwt

我已经尝试了几天,以在.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/中,发现签名有效:

enter image description here

但是我的Web服务仍然拒绝确认令牌。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的答案:

  1. 我的密钥错误。但是即使使用正确的密钥,我仍然会遇到相同的错误...

  2. 在构造SymmetricSecurityKey时,我不得不使用Encoding.Unicode.GetBytes(...)而不是Encoding.ASCIIEncoding.UTF8

  3. 我在使用jwt.io时仍然遇到麻烦。我想这个网站不再是验证令牌的好地方。