Ответ 1
Мне удалось заставить его работать, удалив поставщика переговоров.
<windowsAuthentication enabled="true">
<providers>
<add value="NTLM" />
</providers>
</windowsAuthentication>
Я пытаюсь использовать проверку подлинности Windows в своем приложении ASP.NET. Всякий раз, когда я пытаюсь просмотреть приложение, он отправляет меня на страницу входа. Как я могу заставить его работать без необходимости входа в систему через браузер?
<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>
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.
<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>
Мне удалось заставить его работать, удалив поставщика переговоров.
<windowsAuthentication enabled="true">
<providers>
<add value="NTLM" />
</providers>
</windowsAuthentication>
Мы используем проверку подлинности Windows почти для всех наших приложений для интрасети, включая SharePoint. Сотрудники должны войти в систему, если их браузер автоматически не отправит свои учетные данные Windows на сайт.
В IE это зависит от конфигурации браузера. Я думаю, что есть также способы настроить Chrome и Firefox для автоматической отправки Windows-входа. Я думаю, что Chrome будет следить за настройками Windows Internet (на клиенте), как IE. Попробуйте установить параметры проверки подлинности пользователя на "Автоматический вход с текущим именем пользователя и паролем".
Ниже приведен снимок экрана для иллюстрации, где это находится.
Также обратите внимание, что это связано с тем, что браузер пользователя отправляет токен Windows в приложение. Приложение должно понимать и доверять источнику этого токена, и это будет работать с поддержкой "домена", в котором находятся как пользователь, так и приложение. Я думаю, что он будет работать на одной машине (пока вы отлаживаете), но если вы хотите, чтобы это работало на нескольких компьютерах в сети, вам нужно задуматься о создании домена. Типичным способом создания домена является Active Directory.
Сообщите мне.
Аутентификация Windows с помощью IISExpress
Обновите свой web.config Убедитесь, что ваш файл web.config обеспечивает аутентификацию Windows, а также отменяет анонимную аутентификацию. HttpContext.Current.User.Identity.Name будет пустым, если приложение попадет на анонимную проверку подлинности. Ваша конфигурация должна выглядеть примерно так:
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
Ошибка 401.2 Неавторизованный Иногда вы можете получить 401.2 Unauthorized: Ошибка входа из системы из-за ошибки конфигурации сервера. Если вы это сделаете, убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных. Также убедитесь, что на веб-сервере активированы методы проверки подлинности.
Обновление 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>