[英]Setting up JWT authentication in .NET core 2.0
我正在将现有的.NET Core 1.1.4代码迁移到.NET Core 2.0。 看来我们必须对其进行更改,以便将身份验证作为服务添加到ConfigureService()
而不是在Configure()
函数中。
我们目前正在使用以下属性:
AutomaticAuthenticate
AutomaticChallenge
TokenValidationParameters.IssuerSigningKey
TokenValidationParameters.ValidAudence
TokenValidationParameters.ValidateIssuerSigningKey
TokenValidationParameters.ValidateLifetime
TokenValidationParameters.ValidIssuer
在迁移文档中, AddJwtBearer()
在受众群体中有一个options参数,这就是我所使用的。 但是,我检查了options类的接口,似乎没有其他需要的值。 但是,没有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);
没错,ASP.NET Core 2.0中的AutomaticAuthenticate
和AutomaticChallenge
属性都消失了。
它们被AddAuthentication
方法的重载代替,您可以在其中指定默认的身份验证方案。
从ASP.NET Core 1.x到ASP.NET Core 2.0的迁移文档涵盖了这一点。
这样做意味着在每个请求上,将运行与该方案关联的身份验证处理程序(在您的情况下,是JWT承载令牌处理程序)以尝试对请求进行身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.