У мене веб-сайт, що працює під IIS 7.5. Сайт захищено автентифікацією Windows, і це прекрасно працює:
Коли користувачі переходять на сайт, їх запитують ім'ям користувача / паролем і отримують доступ, якщо вони підтверджені автентифікацією. Якщо користувачі натискають Скасувати або вводити пароль 3 рази, їм відображається сторінка 401 помилок:
Тепер я хотів би показати власну сторінку, що пояснює, як увійти. Тому я переходжу на сторінки помилок, вибираю код статусу 401.2 і вказую його на сторінку, яку я хотів би показати:
Потім переконайтеся, що спеціальні помилки включені для всіх. І каа-бум! Автентифікація більше не працює, користувачам не надається запит на введення пароля. Як зазначається в документації, автентифікація Windows працює, спочатку надсилаючи відповідь 401, потім браузер запитує облікові дані постачальника, а потім вони розробляють, що робити далі.
Що відбувається тут: при першому запиті на сторінку IIS намагається надіслати заголовок 401, але помічає, що web.config говорить "перенаправлення 401 на цю сторінку". І замість автентифікації він просто дає сторінку переспрямування.
Я спробував замінити 401, 401.1, 401.2 - нічого не змінилося.
Що я роблю неправильно і як надати користувацьку сторінку про помилку аутентифікації користувача?
ps Ось 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>