我需要在SharePoint 2010中为声明用户执行搜索模拟。为了说明这一点,我想先说明我如何使用Windows帐户,然后讨论Claims/WIF。如何在没有将索赔映射到AD帐户的情况下执行WIF /索赔模拟?
Windows帐户
我可以使用“经典” Windows集成身份验证的用户这样做:
WindowsImpersonationContext wic = null;
try
{
WindowsIdentity impersonatedUser = new WindowsIdentity("[email protected]");
wic = impersonatedUser.Impersonate();
// do impersonated work here...
// in my case this is a SharePoint KeywordQuery
}
finally
{
if (wic != null)
{
wic.Undo();
}
}
若要获得上述工作的模拟的帐户必须是在同一个域中当前用户和我必须确保应用程序池所有者是:
- 域中具有Windows 2003或更高版本的“域功能级别”的域帐户
- 对当地盒子“作为操作系统的一部分”特权
- 对当地框“模拟客户端身份验证后”特权
(注:如果有人能想出如何绕过这个问题,即经常账户必须是在同一个域中模拟的帐户,我所有的耳朵。)
声明帐户
我愿做索赔/ WIF账户相同。这些帐户是而不是必须与AD帐户关联(我需要假设他们不是)。
有没有办法告诉STS我想模仿一个特定的帐户,并为它提供该帐户的相应标记?我将不会拥有我正在冒充的用户的密码。
引用SharePoint Brew我必须与我的代码在SharePoint Web前端(WFE)上运行,该代码通过WCF调用调用查询处理器。我希望该WCF调用位于模拟用户的上下文中。
WFE的(服务器1)搜索Web部件与服务应用程序代理对话。相关联的搜索服务应用程序代理调用本地STS以获取用户的SAML令牌。一旦收集到SAML令牌,搜索服务应用程序代理就会通过WCF呼叫调用运行查询处理器的服务器。我会打电话给这个服务器,“服务器2”。服务器2收到传入的请求并根据其本地STS验证SAML令牌。一旦确认,服务器2连接到各种组件以收集,合并和安全修整搜索结果。服务器2将修剪的搜索结果发送回服务器1,然后将其呈现给用户。
多一点研究导致我看着ActAs和OnBehalfOf。我相信我会想使用OnBehalfOf,但我不确定这两种方法都可以工作。下面列出了我找到的一些参考文献。任何指导表示赞赏。
- .NET Framework Developer Center - Act As vs. On BehalfOf
- Pablo M. Cibraro (aka Cibrax) blog - ActAs and OnBehalfOf support in WIF
- Programming Windows Identity Foundation(我有书)
关于您用于执行关键字查询搜索的代码的任何建议?我可以做一些帮助:) – 2012-05-10 16:16:50