asp.net Олицетворение пользователя для доступа к сетевым ресурсам - PullRequest
3 голосов
/ 15 апреля 2010

код:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =
    ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

//access network resources.

impersonationContext.Undo();

web.config:

<authentication mode="Windows">       
</authentication>
<identity impersonate="true"
userName="user"
password="password"></identity>

Как видно из файла web.config, приложение работает в олицетворенном режиме. Мне нужно временно выдать себя за него, чтобы получить доступ к сетевому ресурсу. Я делаю это, как показано выше.

Это прекрасно работает на сервере, если я захожу на веб-сайт с локальным IE, установленным на сервере, но когда я получаю доступ к приложению с моего компьютера или любого другого компьютера, я получаю доступ запрещен.

Кстати, все это в среде домена предприятия. поэтому IE в обоих случаях передает действительный аутентифицированный токен.

Любые идеи, что происходит. спасибо.

1 Ответ

3 голосов
/ 16 апреля 2010

Необходимо убедиться, что сервер делегирует олицетворенные контексты безопасности в вашем приложении другому серверу (сетевой ресурс, который вы упомянули).

Я почти уверен, что он работает, когда вы вошли на сервер, потому что он использует контекст безопасности, в который вы входили напрямую, а не олицетворенный контекст, который существует в приложении.

Я не могу вспомнить особенности конфигурации, но я знаю, что это называется делегированием или "Kerberos Double Hop". «Ограниченное делегирование» - это когда вы настраиваете так, что разрешен только один тип делегирования. IE, вашему приложению разрешено делегировать контексты безопасности только при обращении к Active Directory (порт xyz) на этом другом конкретном сервере - иначе нет.

См. Понимание Kerberos Double Hop

См. DelegConfig - это полезно при настройке делегирования.

Также см .: Статья TechNet

И: эта другая статья

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...