何时需要安装自定义声明提供程序以便在 SharePoint 2010 中进行搜索
原文发布于 2012 年 3 月 21 日(星期三)
我们最近已进行了一些有关自定义声明提供程序和搜索的不错(或者说“有趣”)讨论。结果表明有时候您需要在搜索框(我将在下文定义“框”所指的对象)上安装自定义声明提供程序,以便对搜索结果正确进行安全修整。但此情况何时适用则取决于您是使用 FAST Search 2010 还是 SharePoint Search 2010。
先稍微解释一下可能有所帮助。每当用户进行查询时,用户令牌中的声明就会被解码。但是爬网程序检索与内容有关的安全信息时所用的 SiteData Web Service 会始终返回编码的声明。那么我们该如何进行协调?
在 FAST Search 2010 中,我们始终先解码声明,然后才通过 FAST Search 2010 索引器存储它们。我们这样做是因为 FAST Query 服务器未安装 SharePoint 位数,所以它们无法对声明进行编码。请记住,用户声明是经过解码的,因此为了与编码的声明匹配,SiteData Web Service 将返回,将必须对用户声明进行编码才能进行比较。因为我们无法在 FAST Query 服务器上安装自定义声明提供程序,所以我们必须对从 SiteData Web Service 处获得的声明进行解码,并且要进行此操作,必须在 FAST Content SSA 中安装将要使用的任何自定义声明提供程序。所以对于 FAST,我们关心的是在爬网时使用任何自定义声明提供程序。
对于 SharePoint Search 2010,情况正好相反。SharePoint 预计它将安装在所有位置,因此它在以下前提下运行:在查询时,它可以对来自用户的声明进行编码,以便可以对为内容存储的 ACL 进行比较。然而,在尚未将自定义声明提供程序部署到运行查询处理器(也称作 Query and Site Settings Service)的服务器上的情况下,您将发现这样会出问题。在大多数情况下,您在服务器场中的所有服务器(WFE 以及应用程序服务器)上安装自定义声明提供程序。查询处理器需要安装此自定义声明提供程序,以便对声明进行编码。因此,如果所有内容均在单个服务器场中运行且您在所有服务器上均安装有自定义声明提供程序,这样做是正确的。最近出现了一种情况(由此产生了这篇文章),就是您有一个单独的服务场,您要在该场中使用 SharePoint 搜索服务。在这种情况下,您需要确保在运行 Query and Site Settings Service 的服务场中的每台服务器上安装任何自定义声明提供程序。如果您没有这样做,您会发现您的用户自定义声明无法得到评估,因此,它们往往看不到任何返回的搜索结果。
这种情景非常有意思,一群技术人员在这里为我们贡献了一些很棒的解决方法...特别要指出,我年轻有为的弟弟 Luca 帮助我们攻克了最后一个难关,还有 Sanjeev 和 Michael P.。谢谢所有帮助我们更好理解此问题的朋友们。
这是一篇本地化的博客文章。请访问 When Do You Need to Install a Custom Claims Provider for Search in SharePoint 2010 以查看原文