Вот что я пытался сделать
Создайте приложение ASP.NET MVC 3 с проверкой подлинности форм и активным каталогом. Веб-сервер и база данных - это разные физические серверы, следовательно, двойной прыжок.
Я думал, что ответ был в этой старой статье о ограниченном делегировании и протоколе перехода? До сих пор мне не удалось заставить технику работать.
Я тестирую это с моей машины DEV (Windows 7, IIS7) для веб-сервера перед развертыванием в Windows 2008 (IIS7) в производственной настройке. Будет ли Windows 2008 иметь значение?
Что работает и что не удается
Я могу подключиться к формам auth и членству AD. Кажется, это работает нормально. Когда я пытаюсь сделать вызов базы данных с помощью этого кода:
public void AsUser(Action action)
{
using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
{
WindowsImpersonationContext context = null;
try
{
context = id.Impersonate();
action.Invoke();
}
catch (Exception ex)
{
// ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
// buried inner exeption is Requested registry access is not allowed
}
finally
{
if (context != null)
{
context.Undo();
}
}
}
}
Это сбой, с исключением, заставив меня поверить, что у меня есть проблемы с настройкой на моем локальном сервере DEV. Внутреннее исключение составляет Requested registry access is not allowed
.
Если я установил точку останова и проверил WindowsIdentity
после вызова Impersonate()
, я вижу, что для параметра ImpersonationLevel
установлено значение Identification
. Кажется, это похоже на то, что он настроен неправильно. Кто-нибудь может подтвердить?
Я на правильном пути, и это даже возможно настроить? Любые указатели будут оценены.