A autenticação mista do ASP.Net Core 2.0 do JWT e a autenticação do Windows não aceita credenciais
Eu criei a API no asp.net core 2.0, onde estou usando a autenticação de modo misto. Para alguns controladores JWT e para alguns usando autenticação do Windows.
Não tenho nenhum problema com os controladores que autorizam com o JWT. Mas para os controladores em que desejo usar a autenticação do Windows, eu sou indefinidamente solicitado com o nome de usuário e a caixa de diálogo de senha do chrome.
Aqui está o meu código de controlador de amostra onde eu quero usar a autenticação do Windows em vez do JWT.
[Route("api/[controller]")]
[Authorize(AuthenticationSchemes = "Windows")]
public class TestController : Controller
{
[HttpPost("processUpload")]
public async Task<IActionResult> ProcessUploadAsync(UploadFileModel uploadFileModel)
{
}
}
Meu código de serviços de configuração
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = IISDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer("Bearer", options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("blahblahKey")),
ValidateLifetime = true, //validate the expiration and not before values in the token
ClockSkew = TimeSpan.FromMinutes(5) //5 minute tolerance for the expiration date
};
});
// let only my api users to be able to call
services.AddAuthorization(auth =>
{
auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireClaim(ClaimTypes.Name, "MyApiUser").Build());
});
services.AddMvc();
}
Meu método de configuração.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication(); //needs to be up in the pipeline, before MVC
app.UseMvc();
}
Aprecie suas sugestões e ajude nisso.
Atualização: Até agora, depurei meu código no chrome. Mas quando eu uso o IE 11, o código acima está sendo executado sem nenhum problema.
Pode ser esse o problema do CORS do chrome, onde o problema de preflight?
obrigado