Nós enfrentamos um problema muito semelhante. Finalmente, concluímos que, embora o suporte ao logon integrado do NTLM no Internet Explorer e no Firefox seja conveniente, há muitos casos de exceção que resultam em uma falha na qual mudamos nossa abordagem.
O problema com a autenticação integrada é que ele funciona apenas quando o nome de usuário e a senha atualmente conectados ainda estão corretos e autorizados para acessar o recurso.
Existem mais circunstâncias em que não funciona:
- Se o nome de usuário e / ou senha estiverem incorretos, não é possível usar credenciais alternativas como você declarou acima
- Se a conta e / ou senha expirarem ou se a senha estiver incorreta, o navegador retornará uma mensagem "não autorizada" sem a menor ideia de qual dos problemas ela é
A abordagem que padronizamos foi a de colocar uma página web de logon de nome de usuário / senha (na frente do aplicativo) que aceita as credenciais. Quando as credenciais são enviadas, o aplicativo por sua vez validaria essas credenciais no diretório e responderia de acordo (em um mundo .NET você poderia usar a Autenticação de Formulários link para forçar o acesso ao aplicativo por meio dessa página de login). Como o aplicativo está fazendo a validação de credencial, você obtém informações valiosas sobre a natureza da falha de login. Além disso, mesmo se o login for bem-sucedido, mas houver informações relevantes a serem exibidas ao usuário, por exemplo, sua senha expirará em breve, etc., isso oferece uma oportunidade para fazê-lo.
ATUALIZAÇÃO: Esqueci de mencionar que, se você adotar essa abordagem, precisará permitir o acesso anônimo à raiz do aplicativo IIS. Isso permitirá o acesso à página da web de login sem primeiro tentar a autenticação automática do NTLM. Cabe a você se você deixa a autenticação NTLM ativada; talvez você queira que alguns clientes ainda façam login automaticamente.