配置本地 SharePoint 的基于服务器的身份验证

文档管理的基于服务器的 SharePoint 集成可用于将客户互动应用(Dynamics 365 Sales、Dynamics 365 Customer Service、Dynamics 365 Field Service、Dynamics 365 Marketing 和 Dynamics 365 Project Service Automation)与 SharePoint on-premises 连接。 使用基于服务器的身份验证时,Microsoft Entra 域服务被用作信任代理,因此用户无需登录到 SharePoint。

所需权限

若要启用 SharePoint 文档管理,则需要以下成员资格和特权。

  • Microsoft 365 全局管理员成员资格 - 这是执行以下操作所必需的:

    • 对 Microsoft 365 订阅进行管理级别访问。
    • 运行“启用基于服务器的身份验证”向导。
    • 运行 AzurePowerShell cmdlet。
  • Power Apps 运行 SharePoint 集成向导特权。 这要求运行“启用基于服务器的身份验证”向导。

    默认情况下,系统管理员的安全角色有此特权。

  • SharePoint 服务器场管理员组成员资格(适用于 SharePoint 本地集成)。 这是在 SharePoint 服务器上运行大多数 PowerShell 命令所必需的。

设置本地 SharePoint 的服务器到服务器的身份验证

按照提供的顺序使用 SharePoint 2013 on-premises 设置客户互动应用。

重要提示

必须完全按所述步骤顺序来完成。 如果未完成任务(如返回错误消息的 PowerShell 命令),您必须解决问题,然后继续执行下一命令、任务或步骤。

验证必备组件

在对基于服务器的身份验证配置客户互动应用和内部部署 SharePoint 之前,必须满足下列先决条件:

SharePoint 先决条件

  • 带有 Service Pack 1 (SP1) 或更高版本的 SharePoint 2013 (on-premises)

    重要提示

    SharePoint Foundation 2013 版本不支持用于客户互动应用文档管理。

  • 安装 SharePoint 2013 产品系列的 2019 年 4 月累积更新 (CU)。 此 2019 年 4 月 CU 包含自 SP1 以来发布的所有 SharePoint 2013 修补程序(包括所有 SharePoint 2013 安全修补程序)。 2019 年 4 月 CU 不包含 SP1。 在安装 2019 年 4 月 CU 之前,您需要先安装 SP1。 详细信息:KB4464514 SharePoint Server 2013 2019 年 4 月 CU

  • SharePoint 配置

    • 如果使用 SharePoint 2013,对于每个 SharePoint 场,只能为基于服务器的集成配置一个客户互动应用。

    • SharePoint 网站必须通过 Internet 进行访问。 反向代理可能要求 SharePoint 身份验证。 详细信息:为 SharePoint Server 2013 hybrid 配置反向代理设备

    • SharePoint 网站必须配置为在 TCP 端口 443(不支持使用自定义端口)上使用 SSL (HTTPS),并且必须由公共根证书颁发机构颁发证书。 详细信息:SharePoint:关于安全通道 SSL 证书

    • 用于基于声明的身份验证在 SharePoint 和客户互动应用之间映射的一个可靠的用户属性。 详细信息:选择声明映射类型

    • 若要共享文档,必须启用 SharePoint 搜索服务。 详细信息:在 SharePoint 服务器中创建和配置搜索服务应用程序

    • 对于使用 Dynamics 365 移动应用时的文档管理功能,本地 SharePoint 服务器必须通过 Internet 可用。

其他先决条件

  • SharePoint Online 许可证。 客户互动应用至 SharePoint 内部部署的基于服务器的身份认证必须具有 Microsoft Entra ID 中注册的 SharePoint 服务主体名称 (SPN)。 为了实现此目的,至少需要一个 SharePoint Online 用户许可证。 SharePoint Online 许可证可以派生自单个用户许可证并且通常来自以下操作之一:

    • SharePoint Online 订阅。 任何 SharePoint Online 计划都是足够的,即使许可证没有分派给用户。

    • 包含 SharePoint Online 的 Microsoft 365 订阅。 例如,如果您拥有 Microsoft 365 E3,您拥有合适的许可,即使许可证没有分派给用户。

      有关这些计划的详细信息,请参阅查找适合您的解决方案比较 SharePoint 选项

  • 以下软件功能要求运行本主题介绍的 PowerShell cmdlet。

    • Microsoft 面向 IT 专业人员的联机服务登录助手测试版

    • MSOnlineExt

    • 若要安装 MSOnlineExt 模块,从管理员 PowerShell 会话输入以下命令。 PS> Install-Module -Name "MSOnlineExt"

    重要提示

    在撰写本文时,面向 IT 专业人员的 Microsoft 联机服务登录助手的 RTW 版本存在问题。 在解决问题前,建议您使用 Beta 版本。 详细信息:Microsoft Azure 论坛:不能安装适用于 Windows PowerShell 的 Microsoft Entra 模块。未安装 MOSSIA

  • 使用相应的基于声明的身份验证类型在客户互动应用和 SharePoint 内部部署之间进行映射。 默认情况下,使用电子邮件地址。 详细信息:授予客户互动应用权限访问 SharePoint 和配置基于声明的身份验证映射

更新 Microsoft Entra 域服务中的 SharePoint 服务器 SPN

在 SharePoint on-premises 服务器上,在 SharePoint 2013 Management Shell 中,按给定顺序运行这些 PowerShell 命令。

  1. 准备 PowerShell 会话。

    以下 cmdlet 使计算机接收远程命令和添加 Microsoft 365 模块到 PowerShell 会话。 有关这些 cmdlet 的详细信息,请参阅 Windows PowerShell 核心 Cmdlet

    Enable-PSRemoting -force  
    New-PSSession  
    Import-Module MSOnline -force  
    Import-Module MSOnlineExtended -force  
    
  2. 连接到 Microsoft 365。

    运行 Connect-MsolService 命令时,必须提供一个有效的 Microsoft 帐户,该帐户具有所需联机许可证的 SharePoint 全局管理员成员身份。

    有关此处所列每个 Microsoft Entra IDPowerShell 命令的详细信息,请参阅 MSDN:使用 Windows PowerShell 管理 Microsoft Entra

    $msolcred = get-credential  
    connect-msolservice -credential $msolcred  
    
  3. 设置 SharePoint 主机名称。

    对可变主机名设置的值必须为 SharePoint 网站集的完整主机名。 主机名必须是该网站集 URL 派生出来的并区分大小写。 在此示例中,网站集 URL 为 <https://SharePoint.constoso.com/sites/salesteam>,所以主机名是 SharePoint.contoso.com

    $HostName = "SharePoint.contoso.com"  
    
  4. 获取 Microsoft 365 对象(租户)ID SharePoint Server 服务主体名称 (SPN)。

    $SPOAppId = "00000003-0000-0ff1-ce00-000000000000"  
    $SPOContextId = (Get-MsolCompanyInformation).ObjectID  
    $SharePoint = Get-MsolServicePrincipal -AppPrincipalId $SPOAppId  
    $ServicePrincipalName = $SharePoint.ServicePrincipalNames  
    
  5. 在 Microsoft Entra ID 中设置 SharePoint 服务器服务主体名称 (SPN)。

    $ServicePrincipalName.Add("$SPOAppId/$HostName")   
    Set-MsolServicePrincipal -AppPrincipalId $SPOAppId -ServicePrincipalNames $ServicePrincipalName  
    

    上述命令完成后不会关闭 SharePoint 2013 Management Shell,并继续执行下一步。

更新 SharePoint 领域以匹配 SharePoint Online

在 SharePoint on-premises 服务器上的 SharePoint 2013 Management Shell 中,运行 Windows PowerShell 命令。

以下命令要求 SharePoint 场管理员成员资格并设置 SharePoint 本地场的身份验证。

注意

运行此命令更改 SharePoint 本地场的身份验证领域。 对于使用现有安全令牌服务 (STS) 的应用程序,则会导致使用访问令牌的其他应用程序出现异常行为。 详细信息:Set-SPAuthenticationRealm

Set-SPAuthenticationRealm -Realm $SPOContextId  

为 Microsoft Entra ID 在 SharePoint 上创建一个受信任安全令牌

在 SharePoint on-premises 服务器上,在 SharePoint 2013 Management Shell 中,按给定顺序运行这些 PowerShell 命令。

以下命令需要 SharePoint 场管理员成员资格。

有关这些 PowerShell 命令的详细信息,请参阅使用 Windows PowerShell cmdlet 管理 SharePoint 2013 安全

  1. 启用 PowerShell 会话更改 SharePoint 服务器场的安全令牌服务。

    $c = Get-SPSecurityTokenServiceConfig  
    $c.AllowMetadataOverHttp = $true  
    $c.AllowOAuthOverHttp= $true  
    $c.Update()  
    
  2. 设置元数据端点。

    $metadataEndpoint = "https://accounts.accesscontrol.windows.net/" + $SPOContextId + "/metadata/json/1"  
    $acsissuer = "00000001-0000-0000-c000-000000000000@" + $SPOContextId  
    $issuer = "00000007-0000-0000-c000-000000000000@" + $SPOContextId  
    
  3. 在 Microsoft Entra ID 中创建新令牌控制服务应用代理。

    New-SPAzureAccessControlServiceApplicationProxy -Name "Internal" -MetadataServiceEndpointUri $metadataEndpoint -DefaultProxyGroup  
    

    备注

    New- SPAzureAccessControlServiceApplicationProxy 命令可能会返回一条错误消息,指示已经存在同名的应用程序代理。 如果已存在已命名的应用程序代理,则可以忽略此错误。

  4. 在 SharePoint 内部部署为 Microsoft Entra ID 创建新令牌控制服务颁发者。

    $acs = New-SPTrustedSecurityTokenIssuer –Name "ACSInternal" –IsTrustBroker:$true –MetadataEndpoint $metadataEndpoint -RegisteredIssuerName $acsissuer  
    

授予客户互动应用权限访问 SharePoint 和配置基于声明的身份验证映射

在 SharePoint on-premises 服务器上,在 SharePoint 2013 Management Shell 中,按给定顺序运行这些 PowerShell 命令。

以下命令需要 SharePoint 网站集管理成员资格。

  1. 通过 SharePoint 网站集注册客户互动应用。

    输入 SharePoint 内部部署网站集 URL。 在此示例中,使用 https://sharepoint.contoso.com/sites/crm/

    重要提示

    若要完成此命令,SharePoint 应用程序管理业务应用程序代理必须存在并运行。 有关如何启动和配置这项服务的详细信息,请参阅为 SharePoint (SharePoint 2013) 应用程序配置环境中的配置订阅设置和应用管理服务应用程序子主题。

    $site = Get-SPSite "https://sharepoint.contoso.com/sites/crm/"  
    Register-SPAppPrincipal -site $site.RootWeb -NameIdentifier $issuer -DisplayName "crm"  
    
  2. 授予客户互动应用 SharePoint 站点的访问权限。 将 https://sharepoint.contoso.com/sites/crm/ 替换为您的 SharePoint 网站 URL。

    备注

    在下面的示例中,通过使用 Scope 网站集参数,客户互动应用被授予对指定 SharePoint 网站集的访问权限。 Scope 参数接受以下选项: 选择最适合 SharePoint 配置的范围。

    • site. 授予客户互动应用对仅指定 SharePoint 网站的访问权限。 不授予对已命名网站下任何子网站的访问权限。
      • sitecollection. 授予客户互动应用应用对指定 SharePoint 网站集内所有网站和子网站的访问权限。
      • sitesubscription. 授予客户互动应用对 SharePoint 场内所有网站(包括所有网站集、网站和子网站)的访问权限。
    $app = Get-SPAppPrincipal -NameIdentifier $issuer -Site "https://sharepoint.contoso.com/sites/crm/"  
    Set-SPAppPrincipalPermission -AppPrincipal $app -Site $site.Rootweb -Scope "sitecollection" -Right "FullControl"  
    
  3. 设置基于声明的身份验证映射类型。

    重要提示

    默认情况下,基于声明的身份验证映射将使用用户的 Microsoft 帐户电子邮件地址和用户的 SharePoint 本地 工作电子邮件地址 进行映射。 当您使用时,该用户的电子邮件地址必须在这两个系统之间匹配。 有关详细信息,请参阅选择一个基于声明的身份验证映射类型

    $map1 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming  
    

运行“启用基于服务器的 SharePoint 集成向导”

请按照以下步骤进行操作:

  1. 验证您是否具有运行该向导的适当权限。 详细信息:所需权限

  2. 转到设置>文档管理

  3. 文档管理区域中,单击启用基于服务器的 SharePoint 集成

  4. 检查信息,然后单击下一步

  5. 对于 SharePoint 网站,请单击内部部署,然后单击下一步

  6. 输入 SharePoint 内部部署网站集 URL,如 https://sharepoint.contoso.com/sites/crm。 网站必须为 SSL 配置。

  7. 单击下一步

  8. 验证网站节出现。 如果所有网站都确定为有效,请单击启用。 如果一个或多个站点确定无效,请参阅基于服务器的身份验证疑难解答

选择您要放入“文档管理”的实体

默认情况下,包括客户、文章、潜在顾客、产品、报价单和销售宣传资料实体。 在文档管理设置中,您可以添加或删除要用于 SharePoint 的文档管理的实体。 转到设置>文档管理。 详细信息:启用实体的文档管理

添加 OneDrive for Business 集成

完成基于客户互动应用和 SharePoint on-premises 服务器的身份验证配置后,您还可以集成 OneDrive for Business。 利用客户互动应用和 OneDrive for Business 的集成,用户可以使用 OneDrive for Business 创建和管理专用文档。 一旦系统管理员启用了 OneDrive for Business,就可以访问这些文档。

启用 OneDrive for Business

在运行 SharePoint Server on-premises 的 Windows Server 上,打开 SharePoint Management Shell 并运行以下命令。

Add-Pssnapin *  
# Access WellKnown App principal  
[Microsoft.SharePoint.Administration.SPWebService]::ContentService.WellKnownAppPrincipals  
  
# Create WellKnown App principal  
$ClientId = "00000007-0000-0000-c000-000000000000"  
$PermissionXml = "<AppPermissionRequests AllowAppOnlyPolicy=""true""><AppPermissionRequest Scope=""http://sharepoint/content/tenant"" Right=""FullControl"" /><AppPermissionRequest Scope=""http://sharepoint/social/tenant"" Right=""Read"" /><AppPermissionRequest Scope=""http://sharepoint/search"" Right=""QueryAsUserIgnoreAppPrincipal"" /></AppPermissionRequests>"  
  
$wellKnownApp= New-Object -TypeName "Microsoft.SharePoint.Administration.SPWellKnownAppPrincipal" -ArgumentList ($ClientId, $PermissionXml)  
  
$wellKnownApp.Update()  
  

选择一个基于声明的身份验证映射类型

默认情况下,基于声明的身份验证映射将使用用户的 Microsoft 帐户电子邮件地址和用户的 SharePoint 本地工作电子邮件地址进行映射。 请注意,任何基于声明的身份验证类型的值(如电子邮件地址),在客户互动应用和 SharePoint 之间必须匹配。 Microsoft 365 目录同步可以提供帮助。 详细信息:在 Microsoft Azure 中部署 Microsoft 365 目录同步。 要使用其他基于声明的身份验证映射类型,请参阅为基于 SharePoint 服务器的集成定义自定义映射

重要提示

若要启用工作电子邮件属性,SharePoint 本地需已配置和启动 User Profile Service 应用程序。 要在 SharePoint 中启用 User Profile Service 应用程序,请参阅在 SharePoint Server 2013 中创建、编辑或删除 User Profile Service 应用程序。 若要更改用户属性(如工作电子邮件),请参阅编辑用户配置文件属性。 有关 User Profile Service 应用程序的详细信息,请参阅 SharePoint Server 2013 中的 User Profile Service 应用程序概述

另请参阅

基于服务器的身份验证疑难解答
SharePoint 设置与 Customer Engagement 应用的集成