Использование проверки подлинности Windows в ASP.NET
Я пытаюсь использовать проверку подлинности Windows в моем приложении ASP.NET. Всякий раз, когда я пытаюсь просмотреть приложение, оно отправляет меня на страницу входа. Как я могу заставить это работать без необходимости вручную входить через браузер?
web.config
<system.web>
<authentication mode="Windows"></authentication>
<anonymousIdentification enabled="false"/>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
<customErrors mode="Off"></customErrors>
<identity impersonate="true"></identity>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime />
</system.web>
ошибка после обновления IIS Express
Most likely causes:
No authentication protocol (including anonymous) is selected in IIS.
Only integrated authentication is enabled, and a client browser was used that does not support integrated authentication.
Integrated authentication is enabled and the request was sent through a proxy that changed the authentication headers before they reach the Web server.
The Web server is not configured for anonymous access and a required authorization header was not received.
The "configuration/system.webServer/authorization" configuration section may be explicitly denying the user access.
ApplicationHost.config
<authentication>
<anonymousAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
5 ответов
Я смог заставить его работать, удалив поставщика переговоров.
<windowsAuthentication enabled="true">
<providers>
<add value="NTLM" />
</providers>
</windowsAuthentication>
Проверка подлинности Windows с помощью IISExpress
Обновите ваш web.config
Убедитесь, что ваш файл web.config включает аутентификацию Windows, а также запрещает анонимную аутентификацию. HttpContext.Current.User.Identity.Name будет пустым, если приложение перейдет к анонимной аутентификации. Ваш конфиг должен выглядеть примерно так:
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
Ошибка 401.2 Несанкционированный Иногда вы можете получить ошибку 401.2 Unauthorized: Logon failed due to server configuration error
, Если вы это сделаете, убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных. Также убедитесь, что у вас включены методы аутентификации на веб-сервере.
Обновление applicationhost.config
Вы также можете обнаружить, что вам нужно обновить файл applicationhost.config IISExpress (не беспокойтесь - я тоже этого не знал). По сути, это версия файла средства настройки IIS, где вы можете настроить сам веб-сервер. Найти файл applicationhost.config может быть сложно. Это может быть в:
% USERPROFILE%\ Документы \iisexpress\ Config\ ApplicationHost.config
или же
%userprofile%\ мои документы \iisexpress\config\applicationhost.config
Как только вы найдете его, обновите следующие строки (обращая особое внимание на enabled=true):
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
Мы используем проверку подлинности Windows практически для всех наших приложений для интрасети, включая SharePoint. Сотрудники должны войти в систему, если их браузер не отправляет свои учетные данные Windows автоматически на сайт.
В IE это вопрос конфигурации браузера. Я думаю, что есть также способы настроить Chrome и Firefox для автоматической отправки входа в Windows. Я думаю, что Chrome будет следовать интернет-настройкам Window (на клиенте) так же, как IE. Попробуйте установить для параметров аутентификации пользователя значение "Автоматический вход с использованием текущего имени пользователя и пароля".
Смотрите скриншот ниже для иллюстрации, где это.
Также обратите внимание, что для этого браузер пользователя отправляет в приложение токен Windows. Приложение должно понимать и доверять источнику этого токена, и это будет работать с поддержкой "домена", в котором находятся пользователь и приложение. Я думаю, что он будет работать на одной машине (пока вы отлаживаете), но если вы хотите, чтобы это работало на нескольких компьютерах в сети, вам нужно заняться созданием домена. Типичным способом создания домена является Active Directory.
Дай мне знать.
При отладке моего веб-приложения в VS 2017 я обнаружил, что мне нужно обновить [путь решения]\. Vs\config\applicationhost.config. Я заменил раздел аутентификации на:
<authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
Больше здесь: /questions/47654848/iis-express-windows-autentifikatsiya/47654862#47654862
- Откройте IIS (Windows + R 'inetmgr')
- Выберите сервер IIS (корневой узел)
- Двойной щелчок - "Аутентификация"
- Проверка подлинности Windows - щелкните правой кнопкой мыши и выберите "Включить"
- Проверка подлинности с помощью форм - щелкните правой кнопкой мыши и выберите "Отключить"
- Перезагрузите сервер IIS