配置两个 SharePoint Server 场之间的搜索信任

 

**上一次修改主题:**2017-09-05

**摘要:**将接收搜索查询的 SharePoint Server 2016 或 SharePoint Server 2013 内容场配置为信任发送查询的 SharePoint Server 2016 服务器场或 SharePoint Server 2013。

要将内部部署 SharePoint Server 内容场配置为将搜索索引中的结果返回到单独的本地 SharePoint Server 场,必须执行下面两个主要步骤:

  1. 在将接收搜索查询的服务器场中,配置将发送查询的服务器场的信任,方法如下:

    • 使用开放授权 2.0 (OAuth 2.0) Web 授权协议配置服务器到服务器信任关系。

    • 启用接收查询的服务器场,以从所有承载内容的 Web 应用程序返回搜索结果。

  2. 在将发送搜索查询的服务器场中,创建执行以下操作的结果源:

    • 指定远程 SharePoint 作为协议。

    • 指定将接收搜索查询的 SharePoint Server 服务器场中任何根网站集的地址。

    有关详细信息,请参阅在 SharePoint Server 中配置搜索的结果源

    备注

    创建结果源后,您可将其用于 Web 部件或查询规则操作,以公开其提供的搜索结果。这样,发送搜索查询的服务器场的用户可以查看接收查询的服务器场中的结果。有关详细信息,请参阅了解 SharePoint Server 中用于搜索的结果源

本文介绍如何执行上述列表中的第一个过程:如何将接收搜索查询的服务器场配置为信任发送查询的服务器场。

为使本文简洁明了,使用了以下术语:

SendingFarm

具有搜索服务的本地 SharePoint Server 场,该搜索服务向接收服务器场发送搜索查询。

ReceivingFarm

具有搜索索引的本地 SharePoint Server 内容场,该搜索索引从发送服务器场接收搜索查询。本文假定接收服务器场至少具有一个托管内容的 Web 应用程序。

为了使发送服务器场能够从接收服务器场中的搜索索引获取搜索结果,服务器场必须具有下列特征:

备注

因为 SharePoint Server 在 Internet Information Services (IIS) 中作为网站运行,所以管理员和用户依赖于浏览器提供的辅助功能。SharePoint Server 支持受支持的浏览器的辅助功能。有关详细信息,请参阅以下资源:

将接收服务器场配置为信任发送服务器场

  1. 确认执行此过程的帐户是以下组的成员:

    • 接收服务器场中的 Farm Administrators 组。

    • 运行 Microsoft PowerShell cmdlet 的服务器上的 Administrators 组。

      该服务器的管理员可使用 Add-SPShellAdmin cmdlet 来授予某人使用 SharePoint Server cmdlet 的权限。当您运行 Add-SPShellAdmin cmdlet 时,您必须必须在 SQL Server 实例上具有 securityadmin 固定服务器角色的成员资格,且您必须在要更新的所有数据库上具有 db_owner 固定数据库角色的成员资格。有关详细信息,请参阅 Add-SPShellAdmin。如果您没有这些成员资格,请与系统管理员或 SQL Server 管理员联系以请求成员资格。

  2. 在 ReceivingFarm 中的服务器上,启动 SharePoint 命令行管理程序。

    • 对于 Windows Server 2008 R2:

      在 SharePoint Server 环境中,在“开始”菜单上,单击“所有程序”,单击“SharePoint 2016”,然后单击“SharePoint 命令行管理程序”。

    • 对于 Windows Server 2012:

      • 在 SharePoint Server 环境中,单击“开始”页面上的“SharePoint 命令行管理程序”。

      • 如果“SharePoint 命令行管理程序”不在“开始”页面上,右键单击“计算机”,单击“所有应用程序”,然后单击“SharePoint 命令行管理程序”。

      有关如何与 Windows Server 2012 交互的详细信息,请参阅 Windows Server 2012 中的常用管理任务和导航

  3. 在接收服务器场中的服务器上,在 PowerShell 命令提示符处运行下列命令。命令使用 OAuth 2.0 Web 授权协议来配置服务器到服务器信任,以便接收服务器场将信任发送服务器场。

    # Create a trusted security token issuer
    $i = New-SPTrustedSecurityTokenIssuer -Name "SendingFarm" -IsTrustBroker:$false -MetadataEndpoint "https://<SendingFarm_web_application>/_layouts/15/metadata/json/1"
    # Configure trust of the token-signing certificate'
    # by adding the trust used to sign oAuth tokens'
    # to the list of trusted root authorities'
    # in ReceivingFarm
    New-SPTrustedRootAuthority -Name "SendingFarm" -MetadataEndPoint https://<SendingFarm_web_application>/_layouts/15/metadata/json/1/rootcertificate
    

    其中:

    https://<SendingFarm_web_application> 是发送服务器场中的任何 SSL 启用的 Web 应用程序。

    重要

    应将包括用于传入服务器到服务器请求的服务器到服务器身份验证终结点的 Web 应用程序,或进行传出服务器到服务器请求的 Web 应用程序配置为使用安全套接字层 (SSL)。有关如何配置 Web 应用程序以使用 SSL 的信息,请参阅 在 SharePoint 服务器中创建基于声明的 web 应用程序。有关如何对服务器到服务器请求配置 HTTP 支持的信息,请参阅在 SharePoint 2013 中配置服务器间的身份验证中的为 HTTP 配置 STS

  4. 在接收服务器场中的服务器上,在 PowerShell 命令提示符处运行以下命令:

    # Use $realm to store the string'
    # that comes after the \"\@\" character'
    # in the value of $i.NameId
    $realm = $i.NameId.Split("@")
    
  5. 在接收服务器场中的服务器上,在 PowerShell 命令提示符处运行下列命令,以使接收服务器场中的所有 Web 应用程序向发送服务器场返回搜索结果:

    $s1 = Get-SPSite -Identity https://<ReceivingFarm_web_application>
    $sc1 = Get-SPServiceContext -Site $s1
    # Set up an authentication realm for'
    # a web application that hosts content in ReceivingFarm 
    Set-SPAuthenticationRealm -ServiceContext $sc1 -Realm $realm[1]
    # Get a reference to the application principal'
    # for that web application in Farm B
    $p = Get-SPAppPrincipal -Site https://<ReceivingFarm_web_application> -NameIdentifier $i.NameId
    # Grant rights to the application principal'
    # that SendingFarm will use'
    # when it sends queries to ReceivingFarm
    Set-SPAppPrincipalPermission -Site https://<ReceivingFarm_web_application> -AppPrincipal $p -Scope SiteCollection -Right FullControl
    

    其中:

    https://<ReceivingFarm_web_application> 是接收服务器场中 SSL 启用的 Web 应用程序。

  6. 对承载要搜索的内容的接收服务器场中的每个 Web 应用程序重复前一步骤(步骤 5)。

See also

SharePoint Server 身份验证概述
规划 SharePoint Server 中的服务器到服务器身份验证
规划 SharePoint Server 中的服务器到服务器身份验证

在 SharePoint 2013 中配置服务器间的身份验证
Setting Up an oAuth Trust Between Farms in SharePoint 2013
Getting a Full Result Set from a Remote SharePoint Index in SharePoint 2013
JavaScript 和 .NET 中的 JavaScript 对象表示法 (JSON) 简介