我正在将现有的.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,
};
});
AutomaticAuthenticate
和AutomaticChallenge
成为:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);
答案 0 :(得分:1)
您是对的,{Core} 2.0中AutomaticAuthenticate
和AutomaticChallenge
属性已消失。
他们被this overload of the AddAuthentication
method取代,您可以在其中指定默认的身份验证方案。
ASP.NET Core 1.x to ASP.NET Core 2.0 migration docs涵盖了此内容。
这样做意味着,在每个请求中,将运行与该方案关联的身份验证处理程序(在您的情况下,JWT承载令牌处理程序)以尝试对请求进行身份验证。