Ho un sito Web PHP in esecuzione su IIS 7.5. Il sito è protetto dall'autenticazione di Windows e funziona perfettamente:
Quando gli utenti accedono al sito, vengono richiesti nome utente / password e, se autenticati, riescono ad accedere. Se gli utenti fanno clic su Annulla o digitano erroneamente la password 3 volte, viene visualizzata la pagina di errore 401:
Ora vorrei mostrare una pagina personalizzata che spiega come accedere. Quindi vado alle pagine di errore, seleziono il codice di stato 401.2 e lo punto sulla pagina che vorrei visualizzare:
Quindi assicurati che gli errori personalizzati siano attivi per tutti. E kaa-boom! L'autenticazione non funziona più, agli utenti non viene presentata la richiesta della password. Come dice la documentazione, l'autenticazione di Windows funziona inviando prima la risposta 401, quindi il browser chiede all'utente le credenziali del provider e poi decide cosa fare dopo.
Cosa succede qui: alla prima richiesta per la pagina IIS tenta di inviare 401-header, ma nota che web.config dice "su 401 reindirizzare a questa pagina". E invece dell'autenticazione, fornisce solo la pagina di reindirizzamento.
Ho provato a sostituire 401, 401.1, 401.2, senza alcuna differenza.
Cosa sto facendo di sbagliato e come dare una pagina personalizzata sull'errore di autenticazione dell'utente?
ps Ecco il 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>