将JwtAuthentication迁移到Asp.Core 2

时间:2017-10-26 17:12:14

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

从1.0移动到2.0时获得折旧错误

如何启用自动身份验证并将其替换为2.0等效

            app.UseJwtBearerAuthentication(new JwtBearerOptions
        {
            AutomaticAuthenticate = true,
            AutomaticChallenge = true,
            TokenValidationParameters = tokenValidationParameters
        });

1 个答案:

答案 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"
                };
            });
  1. AddAuthentication中的参数名称为DefaultAuthenticationScheme
  2. 在您的情况下,默认情况下是JWT方案,其中包含任何选项,而不是上例中的OpenIdConnect,例如:

                .AddJwtBearer("JWT",options =>
                {
                    ...
                    ...
                    options.SaveToken = true;
                    options.TokenValidationParameters = ...
                });
    
  3. 然后在Configure方法中,您只需拨打app.UseAuthentication

  4. 阅读this&amp; this了解更多信息。
  5. 此外,从1.0到2.0是一个勇敢的举动:)我不会。我从1.0.x移到了1.1.x,现在转到2.祝你好运!