我有一个基于声明的SharePoint 2010网站,我需要呼叫后端非声明感知系统(K2 blackpearl)。
为了达到这个目的,我试图使用Windows令牌服务声明模仿用户here
现在使用用户UPN调用c2wts以使用以下代码转换为声明:
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();
}
我认为这是导致问题的原因,因为当尝试使用令牌失败时调用服务时。上面提到的文章讨论了如何获取模拟令牌,但我无法做到这一点。
有谁知道我可能做错了什么?
由于
答案 0 :(得分:0)
要使模拟级别等于模拟,请将web.config中的模拟设置为false:
<identity impersonate="false" />
另外,请尝试不要在“SPSecurity.RunWithElevatedPrivileges”中执行模拟,因为这样您将进行两次模拟 - 首先是作为Web应用程序池帐户(这是RunWithElevatedPriviliges正在引起的),然后使用来自c2wts的令牌进行手动模拟。 / p>