仅使用一种认证方案(jwt承载)

时间:2017-10-15 02:03:29

标签: asp.net jwt asp.net-core-webapi asp.net-authentication

我正在构建一个ASP.Net Core API并使用JWT进行身份验证。

我有以下配置:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        services.AddAuthentication(option =>
            {
                option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                option.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(cfg =>
          {
              cfg.RequireHttpsMetadata = false;
              cfg.SaveToken = true;

              cfg.TokenValidationParameters = new TokenValidationParameters()
              {
                  ValidateAudience = true,
                  ValidateIssuer = true,
                  ValidateActor = false,
                  ValidateLifetime = false,
                  ValidateIssuerSigningKey = true,

                  ValidIssuers = Global.Issuers,
                  ValidAudiences = Global.Audiences,
                  IssuerSigningKey = Global.symmetricSecurityKey
              };

          });
    }

如您所见,我想使用JWT和 JWT。

几个小时后,我拉着头发试图找出为什么我在[Authorize]属性的任何操作上不断获得401。

我终于尝试了[Authorize(AuthenticationSchemes = "Bearer")]并且它有效了!

那是什么给了什么?!

我如何弄清楚其他认证方案面临的挑战?

我是否必须明确禁用默认方案(cookie)?

我希望避免在我的所有AuthenticationSchemes代码上指定Authorize

谢谢!

0 个答案:

没有答案