Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 如何在声明未映射到AD帐户的情况下执行WIF/声明模拟?_Sharepoint_Claims Based Identity_Windows Identity_Wif - Fatal编程技术网

Sharepoint 如何在声明未映射到AD帐户的情况下执行WIF/声明模拟?

Sharepoint 如何在声明未映射到AD帐户的情况下执行WIF/声明模拟?,sharepoint,claims-based-identity,windows-identity,wif,Sharepoint,Claims Based Identity,Windows Identity,Wif,我需要在SharePoint 2010中为索赔用户执行搜索模拟。为了将其放在上下文中,我想首先说明我如何使其与Windows帐户一起使用,然后讨论索赔/WIF Windows帐户 我可以通过以下方式为“经典”Windows集成身份验证用户执行此操作: WindowsImpersonationContext wic = null; try { WindowsIdentity impersonatedUser = new WindowsIdentity("john.doe@mydomai

我需要在SharePoint 2010中为索赔用户执行搜索模拟。为了将其放在上下文中,我想首先说明我如何使其与Windows帐户一起使用,然后讨论索赔/WIF

Windows帐户 我可以通过以下方式为“经典”Windows集成身份验证用户执行此操作:

WindowsImpersonationContext wic = null;
try
{  
    WindowsIdentity impersonatedUser = new WindowsIdentity("john.doe@mydomain");
    wic = impersonatedUser.Impersonate();

    // do impersonated work here...
    // in my case this is a SharePoint KeywordQuery
}
finally
{
    if (wic != null)
    {
        wic.Undo();
    }
}
要使上述功能正常工作,模拟帐户必须与当前用户位于同一域中,并且我必须确保应用程序池所有者是:

  • “域功能级别”为Windows 2003或更高版本的域中的域帐户
  • 在本地框上具有“作为操作系统的一部分”权限
  • 在本地框上具有“身份验证后模拟客户端”权限
(注意:如果有人能想出如何避开当前帐户必须与模拟帐户位于同一域的问题,我洗耳恭听。)

索赔账户 我想对索赔/WIF账户也这样做。这些账户不一定与广告账户相关(我需要假设它们不相关)

有没有办法告诉STS我想模拟一个特定的帐户,并让它给我该帐户的相应令牌?我没有我正在模拟的用户的密码

引用我的代码运行在SharePoint web前端(WFE),该前端通过WCF调用调用查询处理器。我希望WCF调用位于模拟用户的上下文中

WFE的(Server1)搜索web部件与服务应用程序代理对话。关联的搜索服务应用程序代理调用本地STS为用户获取SAML令牌。收集SAML令牌后,search service应用程序代理将通过WCF调用调用运行查询处理器的服务器。我将此服务器称为“服务器2”。服务器2接收传入请求并根据其本地STS验证SAML令牌。验证后,服务器2将连接到各种组件以收集、合并和安全性修剪搜索结果。服务器2将修剪后的搜索结果发送回服务器1,然后呈现给用户

再多做一点研究,我就要看和看了。我相信我会想使用onbehalof,但我不确定这两种方法是否都有效。下面列出了我找到的一些参考资料。感谢您的指导

  • (我有这本书)

据我所知,您不能直接使用您的身份以外的任何其他身份。如果您想使用像OnBehalfOf这样的函数,您需要一个能够处理委托的STS。因此,STS将检查您的身份,然后允许您使用委派身份。

我花了几个月的时间试图解决此问题,在与Microsoft SharePoint和WIF工程师长期合作后得出结论,这是不可能的。看来这个问题基本上就是柯克所指的。当使用声明创建模拟会话时(例如,创建SPClaim并转换为SPUser),SharePoint实际上并没有创建完全模拟的会话。创建的会话实际上只有对象模型才能理解。这意味着,当您跳出web应用程序的边界并进入搜索时,实际上是在执行双跳,因为您进入了另一个应用程序域/进程空间


我试着做一些类似于eppesuig建议的事情,但没有成功可能如果您编写了一个全新的STS,可以生成SharePoint将接受的可信声明令牌,那么您可能可以使用ActAs令牌解决此问题(SharePoint绝对不会接受OnBehalfOf令牌)。然而,这样做的安全影响相当令人担忧。从理论上讲,这应该是可行的,但让定制STS和SharePoint混合使用/信任被证明超出了我的能力范围。不过,我很想看到其他人尝试一下。

对您用于执行关键字查询搜索的代码有什么建议吗?我需要一些帮助:)