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

Я занимаюсь разработкой интранет-сайта с использованием C# и ASP.NET MVC. У меня есть SQL Server на одном компьютере, а IIS работает на другом компьютере. Я хотел бы, чтобы пользователь посещал сайт интрасети, и без запроса пользователя Internet Explorer отправляет учетные данные Windows пользователя в IIS, а затем они передаются на сервер SQL Server, что означает, что сервер SQL Server может видеть доступ пользователя к базе данных.

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

Кто-нибудь может подсказать, куда я могу пойти не так?

1 ответ

Решение

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

Другие вопросы по тегам