Подтвердить что ты не робот

Получение IIS для олицетворения пользователя Windows на сервере SQL в среде интрасети

Я занимаюсь разработкой сайта интрасети с использованием С# и 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=&quot;data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"

Параметры проверки подлинности 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", к которой работает идентификатор пула приложений.

Может ли кто-нибудь указать, где я могу ошибиться?

4b9b3361

Ответ 1

Хорошо любому, кто посещает этот вопрос в будущем. Я решил это, перезапустив службу IIS... doh! Кажется, мои настройки были в порядке, просто нужно полностью перезапустить службу!