在.NET core 2.0中设置JWT身份验证

时间:2018-04-03 01:09:55

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

我正在将现有的.NET核心1.1.4代码迁移到.NET核心2.0。看起来我们必须更改它,以便我们在ConfigureService()而不是Configure()函数中将身份验证添加为服务。

我们目前正在使用以下属性:

  • AutomaticAuthenticate
  • AutomaticChallenge
  • TokenValidationParameters.IssuerSigningKey
  • TokenValidationParameters.ValidAudence
  • TokenValidationParameters.ValidateIssuerSigningKey
  • TokenValidationParameters.ValidateLifetime
  • TokenValidationParameters.ValidIssuer

在迁移文档中,AddJwtBearer()有一个带有受众的选项参数,这就是我使用的内容。但是,我检查了选项类的接口,似乎没有我需要的任何其他值。但是,有一个TokenValidationParameters属性。我可以实例化我现在使用的相同令牌并使用它吗?

1.1.4版本:

app.UseAuthentication(new JwtBearerOptions
{
    AutomaticAuthenticate = true,
    AutomaticChallenge = true,
    TokenValidationParameters = new TokenValidationParameters
    {
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("AppConfiguration:Key").Value)),
        ValidAudience = Configuration.GetSection("AppConfiguration:SiteUrl").Value,
        ValidateIssuerSigningKey = true,
        ValidateLifetime = true,
        ValidIssuer = Configuration.GetSection("AppConfiguration:SiteUrl").Value
    }
});

2.0.0版本:

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        var siteUrl = Configuration.GetSection("AppConfiguration:SiteUrl").Value;

        options.Audience = siteUrl;
        options.Authority = siteUrl;
        options.TokenValidationParameters = new TokenValidationParameters
        {
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("AppConfiguration:Key").Value)),
            ValidateIssuerSigningKey = true,
            ValidateLifetime = true,
            ValidIssuer = Configuration.GetSection("AppConfiguration:SiteUrl").Value,
        };
    }); 

AutomaticAuthenticateAutomaticChallenge成为:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);

1 个答案:

答案 0 :(得分:1)

您是对的,{Core} 2.0中AutomaticAuthenticateAutomaticChallenge属性已消失。

他们被this overload of the AddAuthentication method取代,您可以在其中指定默认的身份验证方案。

ASP.NET Core 1.x to ASP.NET Core 2.0 migration docs涵盖了此内容。

这样做意味着,在每个请求中,将运行与该方案关联的身份验证处理程序(在您的情况下,JWT承载令牌处理程序)以尝试对请求进行身份验证。