Autenticação NTLM na rota específica no ASP.NET Core
Tentando implementar o assunto em um ambiente de teste.
.UseWebListener(options=>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.NTLM |
AuthenticationSchemes.Negotiate;
options.ListenerSettings.Authentication.AllowAnonymous = true;
})
E
app.UseWhen(context => context.Request.Path.StartsWithSegments("/ntlm"),
builder => builder.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
LoginPath = "/Main/Login",
LogoutPath = "/Main/Logout",
AuthenticationScheme = "NTLM", AccessDeniedPath = "/Main/Deny"
}
));
app.UseWhen(context => !context.Request.Path.StartsWithSegments("/ntlm"),
builder => builder.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AutomaticAuthenticate = false,
AutomaticChallenge = false,
LoginPath = "/Main/Login",
LogoutPath = "/Main/Logout",
AuthenticationScheme = "Cookies"
}
));
Mas parece que não há diferença, se o caminho da solicitação começa com "/ ntlm" ou não.
Tentei executar dois WebListeners, mas acho que há muito mais sobrecarga.
O que eu quero alcançar: O usuário entra na página inicial com o formulário de login e existe um botão "Windows auth". Ele pode inserir credenciais ou pressionar o botão e entrar com sua identidade do sistema operacional.