Сбой сайта ASP.NET при удаленном доступе "NT AUTHORITY\ANONYMOUS LOGON". Доступ к SQL Server через пользователя домена из пула приложений
У меня есть сайт ASP.NET (4.0), доступ к которому осуществляется только с помощью проверки подлинности и олицетворения окон (аномное отключено).
Соединение с SQL Server выполняется с помощью SSPI и с идентификатором пользователя пула приложений, а не с пользователем домена Windows, вошедшим в систему, и пользователем, прошедшим проверку подлинности Windows.
Все работает нормально, когда веб-сайт доступен локально с веб-сервера IIS.
При доступе с удаленного ПК, даже при использовании одного и того же пользователя домена, происходит сбой.
И все серверы находятся в одном домене.... Есть идеи?
Спасибо
1 ответ
Это проблема "двойного прыжка", когда серверу не доверяют передавать учетные данные клиента в другой блок (переход 1 - это учетные данные в блок IIS, переход 2 - из блока IIS в SQL Server).). Он работает при запуске непосредственно на сервере, но не работает при доступе с удаленного ПК. Больше здесь и здесь
Зависит от требований, которые могут потребоваться для проверки подлинности Windows, но не для олицетворения на SQL Server. Олицетворение на SQL Server означает, что для каждого пользователя необходимо иметь учетную запись / разрешения в базе данных. Если это не так и вам нужна только безопасная аутентификация (без жесткого ввода имени пользователя и пароля в web.config), вы можете сделать следующее
- сделать IIS не подражать
- установить пул для использования учетной записи сетевой службы
- создайте учетную запись на вашем сервере баз данных с именем domainName\WebServerMachineName$ и предоставьте права
Подробнее о том, как: подключиться к SQL Server с использованием проверки подлинности Windows в ASP.NET 2.0
Если вам все еще нужно олицетворение, чем делать
Убедитесь, что ваш сервер приложений установлен как доверенный для делегирования. Убедитесь, что в IIS анонимная проверка подлинности отключена, а проверка подлинности Windows включена, при использовании Windows 2008 включите также олицетворение ASP.Net. Если вы используете Windows 2008 и ваш пул приложений работает в сети, перейдите в раздел "Дополнительные параметры проверки подлинности Windows" и отключите режим Kernal. Задайте yourDomain\yourAppServer$, чтобы иметь доступ для чтения к папке приложения ASP.Net. [Источник]