Eu tenho um site php rodando no IIS 7.5. O site é protegido pela autenticação do Windows e funciona bem:
Quando os usuários acessam o site, é solicitado o nome de usuário / senha e a senha é autenticada. Se os usuários clicarem em Cancelar ou digitar a senha incorretamente três vezes, eles serão mostrados na página de erro 401:
Agora eu gostaria de mostrar uma página personalizada explicando como fazer login. Então, vou para as páginas de erro, selecione o código de status 401.2 e aponte para a página que gostaria de exibir:
Em seguida, verifique se os erros personalizados estão ativados para todos. E kaa-boom! A autenticação não funciona mais, os usuários não recebem o prompt de senha. Como a documentação diz, a Autenticação do Windows funciona enviando 401 respostas primeiro, depois o navegador solicita ao usuário que credencie o provedor e, em seguida, eles decidem o que fazer em seguida.
O que acontece aqui: na primeira solicitação da página, o IIS tenta enviar o cabeçalho 401, mas percebe que o web.config diz "no 401 redirecionar para esta página". E, em vez de autenticação, apenas fornece a página de redirecionamento.
Eu tentei substituir 401, 401.1, 401.2 - não fez diferença.
O que estou fazendo de errado e como dar uma página personalizada ao erro de autenticação do usuário?
ps Aqui está o web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="/not_restricted/401.htm" responseMode="ExecuteURL" />
<error statusCode="404" prefixLanguageFilePath="" path="/not_restricted/404.htm" responseMode="ExecuteURL" />
</httpErrors>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<identity impersonate="false" />
<customErrors defaultRedirect="http://www.myserver.com/not_restricted/500.htm" mode="Off">
</customErrors>
</system.web>
</configuration>