. Net core 2.0 windows和jwt身份验证
是否可以在同一个项目中实现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来处理具有任何其他页面和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