从1.0移动到2.0时获得折旧错误
如何启用自动身份验证并将其替换为2.0等效
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = tokenValidationParameters
});
答案 0 :(得分:0)
在2.0中,身份验证配置已移至ConfigureServices
。这一举措的原因是为了摆脱多种身份验证方案的复杂性,如果您的设置不正确(我认为),则尝试对用户进行身份验证。如果你想阅读它,可以在ASPNET Identity github repo上对此进行大讨论。在您的情况下,您需要将其移至ConfigureServices
方法。
示例:
services.AddAuthentication("idSrv")
.AddCookie("Cookies",(options) => {
options.ExpireTimeSpan = TimeSpan.FromMinutes(120);
options.SlidingExpiration = true;
})
.AddOpenIdConnect("idSrv",(options) =>
{
options.SignInScheme = "Cookies";
options.RequireHttpsMetadata = false;
options.Authority = "https://foobar.com";
options.ClientId = "clientname";
options.ClientSecret = "clientsecret";
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.SecurityTokenValidator = new JwtSecurityTokenHandler {
InboundClaimTypeMap = new Dictionary<string, string>()
};
options.GetClaimsFromUserInfoEndpoint = true;
options.UseTokenLifetime = true;
options.Scope.Add("offline_access");
options.SaveTokens = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
AddAuthentication
中的参数名称为DefaultAuthenticationScheme
。在您的情况下,默认情况下是JWT方案,其中包含任何选项,而不是上例中的OpenIdConnect,例如:
.AddJwtBearer("JWT",options =>
{
...
...
options.SaveToken = true;
options.TokenValidationParameters = ...
});
然后在Configure方法中,您只需拨打app.UseAuthentication
此外,从1.0到2.0是一个勇敢的举动:)我不会。我从1.0.x移到了1.1.x,现在转到2.祝你好运!