Ich habe eine PHP-Website unter IIS 7.5. Die Site ist durch Windows-Authentifizierung geschützt und das funktioniert einwandfrei:
Wenn Benutzer die Site besuchen, werden sie nach Benutzername / Kennwort gefragt und erhalten eine Bestätigung, wenn sie authentifiziert sind. Wenn Benutzer dreimal auf Abbrechen klicken oder das Kennwort falsch eingeben, wird die Fehlerseite 401 angezeigt:
Jetzt möchte ich eine benutzerdefinierte Seite anzeigen, die erklärt, wie man sich anmeldet. Also gehe ich zu Fehlerseiten, wähle den Statuscode 401.2 und zeige ihn auf die Seite, die ich anzeigen möchte:
Stellen Sie dann sicher, dass die benutzerdefinierten Fehler für alle aktiviert sind. Und Kaa-Boom! Die Authentifizierung funktioniert nicht mehr, Benutzer erhalten keine Passwortabfrage mehr. Wie aus der Dokumentation hervorgeht, sendet die Windows-Authentifizierung zunächst eine 401-Antwort. Anschließend fordert der Browser den Benutzer auf, die Anmeldeinformationen des Anbieters einzugeben, und ermittelt anschließend, was als Nächstes zu tun ist.
Was hier passiert: Bei der ersten Anforderung für die Seite versucht IIS, 401-Header zu senden, stellt jedoch fest, dass in der Datei web.config "on 401 redirect to this page" (Auf diese Seite umleiten) angegeben ist. Und anstelle der Authentifizierung wird nur die Umleitungsseite angezeigt.
Ich habe versucht, 401, 401.1, 401.2 zu ersetzen - machte keinen Unterschied.
Was mache ich falsch und wie gebe ich benutzerdefinierte Seite auf Benutzerauthentifizierungsfehler?
ps Hier ist die 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>