Я занимаюсь разработкой сайта интрасети с использованием С# и ASP.NET MVC. У меня есть SQL Server на одной машине, а IIS - на отдельной машине. Я хотел бы, чтобы пользователь посетил сайт интрасети и без запроса пользователя Internet Explorer отправил учетные данные пользователей Windows в IIS, и они затем передаются серверу sql, что означает, что сервер sql может видеть, как пользователь обращается к базе данных.
Мне известно о проблеме с двойным прыжком Kerberos, и я пытаюсь это сделать. В настоящее время я могу получить IE для передачи учетных данных Windows в IIS и проверки подлинности. Я просто не могу заставить IIS передавать эти учетные данные на SQL Server, и вместо этого запрос в настоящее время выполняется под идентификатором пула приложений, который настроен на учетную запись службы домена "htu\srv-htu-iis".
Моя настройка выглядит следующим образом:
Web.Config
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Строка подключения
connection string="data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
Параметры проверки подлинности IIS
Anonymous Authentication = Disabled
ASP.NET Impersonation = Enabled
Forms Authentication = Disabled
Windows Authentication = Enabled
Настройки пула приложений IIS
Managed Pipeline = Integrated
Identity = htu\srv-htu-iis (domain service account)
Настройки Active Directory
У учетной записи службы домена htu\srv-htu-iis был установлен набор имен основных сервисов, который связывает наш сайт с учетной записью.
Активный каталог имеет
Allow Delagation to any service
SQL Server работает под собственной учетной записью службы доменных имен SQL.
Испытания
Я выполнил следующие тесты кода:
System.Web.HttpContext.Current.User.Identity.Name
это правильно вернет учетные данные Windows для пользователя, обращающегося к сайту
System.Security.Principal.WindowsIdentity.GetCurrent().Name
вернуть учетную запись службы домена "htu\srv-htu-iis", к которой работает идентификатор пула приложений.
Может ли кто-нибудь указать, где я могу ошибиться?