. Net core 2.0 windows和jwt身份验证

. Net core 2.0 windows和jwt身份验证,windows,authentication,jwt,asp.net-core-2.0,Windows,Authentication,Jwt,Asp.net Core 2.0,是否可以在同一个项目中实现windows和jwt身份验证方案 我需要windows身份验证来捕获没有任何登录页面的用户,并需要jwt来处理具有任何其他页面和wep api的角色 是的,您可以向应用程序添加多个身份验证方案。参考以下内容 我终于让这两种方法都起作用了。我并没有在互联网上找到任何解决的例子,希望这能帮助任何人寻找答案 services.AddAuthentication(options => { o

是否可以在同一个项目中实现windows和jwt身份验证方案


我需要windows身份验证来捕获没有任何登录页面的用户,并需要jwt来处理具有任何其他页面和wep api的角色

是的,您可以向应用程序添加多个身份验证方案。参考以下内容

我终于让这两种方法都起作用了。我并没有在互联网上找到任何解决的例子,希望这能帮助任何人寻找答案

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = IISDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = "Bearer";
            }).AddJwtBearer("Bearer", options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience = false,
                    //ValidAudience = "the audience you want to validate",
                    ValidateIssuer = false,
                    //ValidIssuer = "the isser you want to validate",

                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("myapisecretkey")),

                    ValidateLifetime = true, //validate the expiration and not before values in the token

                    ClockSkew = TimeSpan.FromMinutes(5) //5 minute tolerance for the expiration date
                };
            });

            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                    .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
                    .RequireClaim(ClaimTypes.Name, "MyAPIUser").Build());
            });
然后通过修饰选择要在特定控制器上使用的身份验证方案

[Route("api/MyController")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class MyController : Controller