代码之家  ›  专栏  ›  技术社区  ›  Vegar

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

  •  0
  • Vegar  · 技术社区  · 6 年前

    我已经尝试了几天在.net core 2.1web服务中使用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 回复  |  直到 6 年前
        1
  •  0
  •   Vegar    6 年前

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

    1. 我的钥匙错了。但即使有正确的钥匙,我还是有同样的错误。。。

    2. 当构造 SymmetricSecurityKey ,我不得不使用 Encoding.Unicode.GetBytes(...) 而不是 Encoding.ASCII Encoding.UTF8 .

    3. 我和jwt.io还有问题。我想这个网站不再是验证令牌的好地方了。