Претензии к сервису токенов Windows олицетворяют токен

У меня есть веб-сайт SharePoint 2010 на основе утверждений, на котором мне нужно обратиться к внутренней системе, не поддерживающей утверждения (K2 blackpearl).

Поэтому для достижения этой цели я пытаюсь использовать службу заявок на токены Windows, чтобы выдать себя за пользователя, как описано здесь.

Теперь при вызове c2wts с использованием имени пользователя UPN для преобразования в заявку используется следующий код:

WindowsIdentity windowsIdentity = null;
SPSecurity.RunWithElevatedPrivileges(
delegate()
{
windowsIdentity = S4UClient.UpnLogon("user@domain.com");
});

Теперь, когда я имитирую, что windowsIdentity.ImpersonationLevel является Идентификацией, а не Олицетворением

using (WindowsImpersonationContext c = windowsIdentity.Impersonate())
{
Debug.WriteLine(WindowsIdentity.GetCurrent().ImpersonationLevel); // returns Identification
ConnectToK2();
c.Undo();
} 

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

Кто-нибудь знает, что я могу делать не так?

Спасибо

1 ответ

Чтобы получить уровень олицетворения, равный олицетворению, установите для олицетворения в вашем файле web.config значение false:

    <identity impersonate="false" />

Также старайтесь не выполнять олицетворение внутри "SPSecurity.RunWithElevatedPrivileges", так как таким образом вы выполняете олицетворение дважды - сначала как учетная запись пула веб-приложений (именно это вызывает RunWithElevatedPriviliges), а затем с помощью ручного олицетворения с использованием токена c2wts.

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