Мы перемещаем старое приложение в новую среду с использованием Windows 2012 с IIS 8.5, и я обнаружил следующую ошибку:
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Could not find a login matching the name provided. [CLIENT: 10.107.23.103]
Кажется, это очень часто. Везде, где я читал в сети, упоминается ошибка «двойного прыжка». Однако, насколько я понимаю, при использовании делегирования для подключения к базе данных будут использоваться только учетные данные клиента, а не учетная запись домена, на которой запущен пул приложений, которая является учетной записью, имеющей доступ к базе данных.
Я тоже читал эту статью (https://www.mssqltips.com/sqlservertip/2312/understanding-when-sql-server-kerberos-delegation-is-needed/) и упоминается, что делегирование Kerberos не требуется для этого сценария:
«Пользователь подключается к веб-сайту или приложению в другой системе и использует учетную запись домена Windows (отличную от пользователя) или учетную запись SQL Server для подключения к SQL Server».
Это похоже на то, чего я пытаюсь достичь.
Есть ли что-нибудь, что может быть неправильно настроено на сервере IIS, что приводит к сбою приложения при попытке подключения к SQL Server?
Я просто нашел решение. Проблема была связана с тем, что
<identity impersonate="true" />
в файле web.config. Установка значения "false" решила проблему.
Похоже, вам нужно запустить ApplicationPool под другой учетной записью, например «Сетевая служба». Затем вам необходимо предоставить доступ к MS SQL учетной записи «domain \ iis-server-name $».
И не исключено, что вам нужно включить «Аутентификацию Windows» в настройках IIS (или сайта).