Претензии к сервису токенов 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.