J'ai un site Web php fonctionnant sous IIS 7.5. Le site est sécurisé par l'authentification Windows et cela fonctionne très bien:
Lorsque les utilisateurs se rendent sur le site, il leur est demandé de saisir un nom d'utilisateur / mot de passe et de passer s'ils sont authentifiés. Si les utilisateurs cliquent sur Annuler ou tapent le mot de passe 3 fois, la page d'erreur 401 s'affiche:
Maintenant, je voudrais afficher une page personnalisée expliquant comment se connecter. Je vais donc aux pages d'erreur, sélectionnez le code d'état 401.2 et le pointe vers la page que je souhaite afficher:
Assurez-vous ensuite que les erreurs personnalisées sont activées pour tout le monde. Et kaa-boom! L'authentification ne fonctionne plus, les utilisateurs ne reçoivent pas d'invite de mot de passe. Comme le dit la documentation, l'authentification Windows fonctionne en envoyant d'abord une réponse 401, puis le navigateur demande à l'utilisateur de fournir les informations d'identification du fournisseur, puis il détermine ce qu'il doit faire ensuite.
Que se passe-t-il ici: à la première demande de la page, IIS essaie d'envoyer un en-tête 401, mais remarque que web.config indique "sur la redirection 401 vers cette page". Et au lieu de l'authentification, cela donne juste la page de redirection.
J'ai essayé de remplacer 401, 401.1, 401.2 - cela n'a fait aucune différence.
Que fais-je de mal et comment donner une page personnalisée sur l'erreur d'authentification de l'utilisateur?
ps Voici le 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>