1

我有一个基于声明的 SharePoint 2010 网站,我需要调用后端非声明感知系统 (K2 blackpearl)。

因此,为了实现这一点,我尝试使用对 Windows 令牌服务的声明来模拟用户,如此处所述

现在,当使用用户 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();
} 

我认为这是导致问题的原因,因为当尝试使用失败的令牌调用服务时。上面提到的文章谈到了取回模拟令牌,但我无法做到这一点。

有谁知道我可能做错了什么?

谢谢

4

1 回答 1

0

要使模拟级别等于模拟,请将 web.config 中的模拟设置为 false:

    <identity impersonate="false" />

也尽量不要在“SPSecurity.RunWithElevatedPrivileges”中执行模拟,因为这样您将执行两次模拟 - 首先作为 Web 应用程序池帐户(这是 RunWithElevatedPriviliges 导致的),然后使用来自 c2wts 的令牌进行手动模拟。

于 2012-11-30T08:42:58.273 回答