2012-06-24 2 views
2

фона:Double Hop с сайта ASP.Net и NHibernate

сайт ASP.Net MVC. Хостинг на IIS7, интранет.

База данных: SQL Server. Доступ через NHibernate.
В строке соединения доступ установлен на Integrated Security: SSPI.
(Права доступа к БД Active-каталогов на основе.)

Короче говоря, это типичная ситуация двойного прыжка,
, где мне нужно, чтобы передать учетные данные клиента для IIS, и с IIS для SQL Server.

Проблема:

Проблема представляет собой желтый экран смерти с ошибкой:
Login failed for user 'MyDomain\UserThatRunsAppPool'.

Что я пытался делать, чтобы решить эту проблему:

  • Настройка аутентификации для включения только Аутентификация Windows
    и ASP.NET Олицетворение
  • Настройка проверки подлинности Windows Provider в Negotiate:Kerberos
    (После отключения проверки подлинности в режиме ядра)
  • Убедившись, что делегация UserThatRunsAppPool установлен на:
    'Trust the user for delegation to any service (Kerberos only)' в Active Directory
  • Перемещение NHibernate SessionFactory от Application_BeginRequest()
    до Session_Start()

Насколько успешно я был с моими попытками устранить проблему:

Вовсе нет.


EDIT:
Я также попытался установить делегирование сервера IIS к 'Trust the user for delegation to any service (Kerberos only)' (в Active Directory).

ответ

3
In short, this is a typical double-hop situation, 
where I need to pass client's credentials to IIS, and from IIS to SQL Server. 

Вы столкнулись с проблемой «делегирования». Если вы хотите оставаться в здравом уме, измените строку соединения, чтобы использовать имя пользователя + пароль SQL вместо SSPI.

Если вы чувствуете себя как две недели расстроенной отладки и ссоры с администраторами домена, прочитайте Fun with the Kerberos Delegation Web Site.

+1

Если он получил логин для «MyDomain \ UserThatRunsAppPool», это означает, что вызов не олицетворяет HTTP-вызывающего. Веселье с делегацией запустит только * после *, что, как только он успешно исправит олицетворение. –

Смежные вопросы