配置 Customer Engagement (on-premises)和本地 SharePoint 的基于服务器的身份验证

备注

如果您已启用仅统一接口模式,则在使用本文中的过程之前,请执行以下操作:

  1. 在导航栏上选择设置 (齿轮按钮。)。
  2. 选择高级设置

    高级设置。

本主题介绍如何在 Dynamics 365 Customer Engagement (on-premises) 和本地 Microsoft SharePoint 之间配置基于服务器的集成。

对 Customer Engagement (on-premises) 和 SharePoint 设置基于服务器的集成

按照提供的步骤顺序,使用本地 Microsoft SharePoint Server 设置 Customer Engagement (on-premises)。

重要提示

  • PowerShell 命令应在管理员模式下运行。 请参阅:如何启动 PowerShell?
  • 如果某个任务未完成,例如,PowerShell 命令返回了一条错误消息,则必须先解决该问题,然后才能继续下一命令、任务或步骤。
  • 启用基于服务器的 SharePoint 集成后,不能恢复到之前的基于客户的授权方法。 因此,配置基于服务器的 SharePoint 集成的 Customer Engagement (on-premises) 组织后,不能使用 Microsoft Dynamics CRM 列表组件。

验证必备组件

在配置 Customer Engagement (on-premises) 和 SharePoint 内部部署以进行基于服务器的集成之前,需要获得下列权限并满足必备条件。

所需权限

Customer Engagement (on-premises)

  • 系统管理员安全角色 - 这是在 Customer Engagement (on-premises) 中运行“启用基于服务器的 SharePoint 集成”向导所必需的。

  • 如果您将自签名证书用于评估目的,则必须在运行 Dynamics 365 Server 的计算机上拥有本地管理员组成员资格。

SharePoint On-Premises

  • 服务器场管理员组成员资格 - 这是在 SharePoint 服务器上运行大多数 Windows PowerShell 命令所必需的。

SharePoint 先决条件

  • 以下 SharePoint 版本的其中一个:

    • Sharepoint 服务订阅版本。

    • SharePoint 2019 On-Premises。

      Dynamics 365 Customer Engagement (on-premises) 与 Microsoft SharePoint 2019 On-Premises 之间基于服务器的集成需要 Microsoft Dynamics 365 Server, v9.0 (on-premises) Update 0.13 或更高版本。

    • SharePoint 2016 On-Premises。

    • 具有 Service Pack 1 (SP1) 的 Microsoft SharePoint 2013 On-Premises 或者使用以下更新的最新版本。

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

        • KB4464512 – SharePoint Foundation 2013 2019 年 4 月 CU

        • KB4464514 – SharePoint Server 2013 2019 年 4 月 CU

        • KB4464513 – Project Server 2013 2019 年 4 月 CU

  • SharePoint 配置

    • 必须仅为单个服务器场部署配置 SharePoint。

    • 若要使用基于声明的默认身份验证映射,SharePoint 服务器和 Dynamics 365 Server 所在的 Active Directory 域必须是相同域,或者 SharePoint 服务器所在的域必须信任 Dynamics 365 Server 所在的域。 详细信息:关于基于声明的身份验证映射

    • SharePoint 网站必须配置为使用 TLS/SSL (HTTPS),并且必须由公共根证书颁发机构颁发证书。 详细信息:SharePoint:关于安全通道 SSL 证书

    • 必须创建并启动 App Management Service Application Proxy。 详细信息:为 SharePoint 应用配置环境

    • 必须配置和启动 User Profile Service 应用程序。 详细信息:在 SharePoint Server 2013 中创建、编辑或删除 User Profile Service 应用程序

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

    • 对于使用 Microsoft Customer Engagement (on-premises) 移动应用时的文档管理功能,本地 SharePoint 服务器必须通过互联网可用。

    • 若要允许用户从 Customer Engagement (on-premises) 创建 SharePoint 文档库,必须具备以下权限和配置:

      • Customer Engagement (on-premises) 用户 Active Directory 帐户必须是存储文档的 SharePoint 网站集上的网站成员组的成员。

      • 默认情况下,基于声明的身份验证映射会使用 Customer Engagement (on-premises) 用户的 SharePoint 电子邮件地址和用户的本地 SharePoint 工作电子邮件地址进行映射。 使用此映射时,用户的电子邮件地址必须在这两个系统之间匹配。 详细信息:使用 SharePoint 电子邮件地址配置用户声明映射

其他必备条件和限制

  • 用于 Dynamics 365 Server 和 SharePoint 服务器之间基于服务器的身份验证的 X509 数字证书。 证书密钥必须采用至少 2048 位的加密。 大多数情况下都必须由受信任的证书颁发机构颁发该证书,但出于评估目的,您可以使用自签名证书。

  • CRMAppPool 应用程序池的标识必须具有 x509 证书的读访问权限,该证书将用于对 Dynamics 365 Server 和 SharePoint 服务器执行基于服务器的身份验证。 可使用 Certificates MMC 管理单元授予此访问权限。

  • 如果使用 Microsoft SharePoint 2013,对于每个 SharePoint 场,只能为基于服务器的集成配置一个 Customer Engagement (on-premises) 组织。 但是,您可以将多个 Customer Engagement (on-premises) 组织连接到 SharePoint 2016 服务器场。

准备 Dynamics 365 Server 以用于基于服务器的集成

CertificateReconfiguration.ps1 是一个 Windows PowerShell 脚本,用于将一个证书安装到本地证书存储,授予指定的 Microsoft Dynamics 365 异步处理服务标识访问该证书的权限,并更新 Dynamics 365 Server 以使用该证书。

将服务器到服务器证书添加到本地证书存储和 Customer Engagement (on-premises) 配置数据库中

  1. 在所有安装了 Dynamics 365 Server 完全服务器角色的服务器上打开一个 PowerShell 命令会话。

重要提示

必须在运行 Web 应用程序服务器角色的所有服务器上运行此处介绍的命令。

  1. 将您的位置更改为 <drive>:\Program Files\Microsoft Dynamics CRM\Tools folder。

  2. 按照此处的说明运行 CertificateReconfiguration.ps1 Windows PowerShell 脚本:

    • certificateFilepath\Personalcertfile.pfx。 指定个人信息交换文件 (.pfx) 完整路径的必需参数。 详细信息:使用数字证书

    • passwordpersonal_certfile_password。 指定私有证书密码的必需参数。

    • certificateType S2STokenIssuer: 指定证书类型的必需参数。 对于 Customer Engagement (on-premises) 和 SharePoint 基于服务器的集成,只有 S2STokenIssuer 受支持。

    • serviceAccountDomainName\UserName’ 或 ‘Network Service’。

    serviceAccount 'contoso\\CRMWebAppServer' or ‘Network Service’. Required parameter that specifies the identity for the Web Application Server role. The identity is either a domain user account, such as *contoso\\CRMWebAppServer*, or Network Service. The identity will be granted permission to the certificate.
    
    • updateCrm: 将证书信息添加到 Microsoft Customer Engagement (on-premises) 配置数据库。

      重要提示

      即使部署了多个 Web 应用程序服务器或异步服务角色,也只需使用 updateCrm 参数运行一次此命令。

    • storeFindType FindBySubjectDistinguishedName。 指定证书存储的类型。 默认情况下,该值为 FindBySubjectDistinguishedName,当您运行脚本时,建议也采用该值。

    重要提示

    尽管对于运行此命令,updateCrm 和 StoreFindType 参数是可选的,但这些参数是基于服务器的 SharePoint 集成所必需的,所以向认证数据库添加了证书信息。

    示例

    .\CertificateReconfiguration.ps1 -certificateFile c:\Personalcertfile.pfx -password personal_certfile_password -updateCrm -certificateType S2STokenIssuer -serviceAccount Domain\UserName -storeFindType FindBySubjectDistinguishedName
    

准备 SharePoint 服务器场以用于基于服务器的集成

获得 Dynamics 365 领域 ID

  1. 启动“启用基于服务器的 SharePoint 集成向导”。 转到设置>文档管理

  2. 选择下一步,选择本地,然后选择下一步

  3. 该 ID显示在页面上的 Dynamics 365 领域 ID 旁边。

    小费

    将“Dynamics 365 领域 ID”保存到安全网络共享或基于云的存储上的文本文件中。 然后,您可以从运行“启用基于服务器的 SharePoint 集成向导”的位置轻松对其进行检索。

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

准备 SharePoint 服务器以用于 Dynamics 365 Server 身份验证

  1. 如果您使用的 PowerShell Management Shell 不是 SharePoint Management Shell,则必须使用以下命令注册 SharePoint 模块。

    Add-PSSnapin Microsoft.SharePoint.PowerShell
    

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

    $c = Get-SPSecurityTokenServiceConfig
    $c.AllowMetadataOverHttp = $true
    $c.AllowOAuthOverHttp= $true
    $c.Update()
    
  2. 创建受信任的安全令牌服务对象,其中 OrganizationName 是 Customer Engagement (on-premises) 组织的唯一名称,CrmServer 是安装了 Customer Engagement (on-premises) Web 应用程序服务器角色的 IIS Web 服务器的名称,-Name“crm”用于为安全令牌服务器 (STS) 命名。

    重要提示

    • 不支持将多个 Customer Engagement (on-premises) 组织连接到一个 Microsoft SharePoint 2013 服务器场。 但是,您可以将多个 Customer Engagement (on-premises) 组织连接到 SharePoint 2016 服务器场。

    • 如果 Customer Engagement (on-premises) 网站仅采用了 HTTPS 绑定或同时采用了 HTTPS 和 HTTP 绑定(如以下示例),运行 New-SPTrustedSecurityTokenIssuer PowerShell 命令时,必须为 Customer Engagement (on-premises) 元数据终结点指定 HTTPS。

    New-SPTrustedSecurityTokenIssuer –Name "crm" –IsTrustBroker:$false –MetadataEndpoint https://CrmServer/XrmServices/2015/metadataendpoint.svc/json?orgName=OrganizationName
    
  3. 使用 SharePoint 网站集注册 Customer Engagement (on-premises)。

    若要运行以下命令,必须指定两个参数:

    • SharePoint 内部部署网站集 URL。 在此处的示例中,https://sharepoint.contoso.com/sites/crm/ 用于网站集 URL。

    • CrmRealmId 是您想用于 SharePoint 文档管理的 Customer Engagement (on-premises) 组织的 ID。 详细信息:获取 Dynamics 365 领域 ID

    重要提示

    若要完成这些命令,SharePoint App Management Service Application Proxy 必须存在并正在运行。 有关如何启动和配置这项服务的详细信息,请参阅为 SharePoint 应用配置环境中的“配置订阅设置和应用管理服务应用程序”主题。

    $CrmRealmId = "CRMRealmId"
    $Identifier  = "00000007-0000-0000-c000-000000000000@" + $CrmRealmId
    $site = Get-SPSite "https://sharepoint.contoso.com/sites/crm/"
    Register-SPAppPrincipal -site $site.RootWeb -NameIdentifier $Identifier -DisplayName "crm"
    
  4. 授予 Customer Engagement (on-premises) 对 SharePoint 网站的访问权限。

    备注

    在下面的示例中,通过使用 –Scope sitecollection 参数,Customer Engagement (on-premises) 被授予对指定 SharePoint 网站集的访问权限。 Scope 参数接受以下选项: 使用最适合您的 SharePoint 配置的范围:

    • site。 仅授予 Customer Engagement (on-premises) 对指定 SharePoint 网站的权限。 不授予对已命名网站下任何子网站的访问权限。

    • sitecollection。 授予 Customer Engagement (on-premises) 对指定 SharePoint 网站集内所有网站和子网站的权限。

    • sitesubscription。 授予 Customer Engagement (on-premises) 对指定 SharePoint 场内所有网站(包括所有网站集、网站和子网站)的权限。

    $app = Get-SPAppPrincipal -NameIdentifier $Identifier -Site $site.Rootweb
    Set-SPAppPrincipalPermission -AppPrincipal $app -Site $site.Rootweb -Scope "sitecollection" -Right "FullControl" -EnableAppOnlyPolicy
    #"Set up claims-based authentication mapping"
    New-SPClaimTypeMapping -IncomingClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
    

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

  1. 在 Customer Engagement (on-premises) 中,转到设置>文档管理

  2. 在文档管理区域中,选择启用基于服务器的 SharePoint 集成

  3. 查看信息,然后选择下一步

  4. 对于 SharePoint 网站,选择本地,然后选择下一步

  5. 准备网站阶段,输入以下信息:

  6. 选择下一步

  7. 验证网站节出现。 如果所有网站都有效,选择启用。 如果有一个或多个网站无效,请参阅“Dynamics 365 Server 到 SharePoint Server On-Premises 基于服务器集成疑难解答”。

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

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

添加 OneDrive for Business 集成

完成基于 Customer Engagement (on-premises) 和本地 SharePoint 服务器的集成配置后,您还可以集成 OneDrive for Business。 通过 Customer Engagement (on-premises) OneDrive for Business 集成,Customer Engagement (on-premises) 用户可以使用 OneDrive for Business 创建和管理私有文档。 一旦系统管理员启用了 OneDrive for Business,就可以在 Customer Engagement (on-premises) 内访问这些文档。

启用 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=""https://sharepoint/content/tenant"" Right=""FullControl"" /><AppPermissionRequest Scope=""https://sharepoint/social/tenant"" Right=""Read"" /><AppPermissionRequest Scope=""https://sharepoint/search"" Right=""QueryAsUserIgnoreAppPrincipal"" /></AppPermissionRequests>"
    
$wellKnownApp= New-Object -TypeName "Microsoft.SharePoint.Administration.SPWellKnownAppPrincipal" -ArgumentList ($ClientId, $PermissionXml)
     
$wellKnownApp.Update()

Customer Engagement (on-premises) 到本地 SharePoint Server 的基于服务器集成疑难解答

有关如何排查“启用基于服务器的 SharePoint 集成向导”问题和查看 SharePoint 监视日志的信息,请参阅基于服务器的身份验证疑难解答

已知问题

有关 SharePoint 疑难解答和已知问题的文档管理,请参阅基于服务器的身份验证疑难解答

关于基于声明的身份验证映射

使用基于声明的身份验证映射时,SharePoint Server 和 Dynamics 365 Server 所在 Active Directory 域必须相同。 不支持位于不同 Active Directory 林或域中的服务器。 同样,位于 Dynamics 365 Server 或 SharePoint Server 的外部域的用户不能访问文档。

默认情况下,Customer Engagement (on-premises) 和 SharePoint 内部部署之间基于服务器的身份验证使用用户的安全标识符 (SID) 验证每个用户的身份。 如果要使用自定义的基于声明的身份验证映射,例如用户的电子邮件地址,请参阅为 SharePoint 基于服务器的集成定义自定义声明映射

使用 SharePoint 电子邮件地址配置用户声明映射

  1. 打开窗体编辑器自定义用户窗体。 为此,请转到设置>安全性>用户,然后打开所需的用户记录。

  2. 在工具栏上,选择,然后选择窗体编辑器

    打开用户窗体的编辑器。

  3. 字段资源管理器窗格中找到 SharePoint 电子邮件地址字段,并将其拖放到用户窗体的用户信息部分。

    在用户窗体上添加 SharePoint 电子邮件地址字段。

  4. 在窗体编辑器工具栏上,选择保存,然后选择发布

  5. 关闭窗体编辑器并刷新 Web 浏览器选项卡以显示在用户记录中新添加的字段。

  6. 在用户记录 SharePoint 电子邮件地址字段中,输入与 SharePoint 中显示的电子邮件地址完全相同的用户的电子邮件地址。

  7. 选择保存

  8. 对将需要文档管理的所有用户重复前面的两个步骤。

使用数字证书

以下过程创建个人信息交换文件 (.pfx)。

  1. 在拥有您希望用于服务器到服务器身份验证的证书访问权的计算机上,选择开始,选择运行,键入 MMC,然后按 Enter 键。

  2. 选择文件,然后选择添加/删除管理单元

  3. 在“可用的管理单元”列表中依次选择证书添加计算机帐户下一步,选择完成以选择本地计算机,最后选择确定

  4. 展开证书,展开个人,然后选择证书

  5. 右键单击要用于创建个人证书文件的证书,指向所有任务,然后选择导出

  6. 选择下一步,选择以导出私钥,确保选中以下选项,然后选择下一步

    • 在证书路径中包括所有证书(如果可能)

    • 导出所有展开的属性

  7. 选择浏览,输入 .pfx 文件的位置和文件名,然后选择保存

  8. 选择下一步,然后选择完成

获得 SharePoint 领域 ID

在 SharePoint Management Shell 中运行以下 PowerShell 命令,其中 https://sharepoint.contoso.com/sites/crm/ 是 SharePoint 网站集的 URL。

Get-SPAuthenticationRealm -ServiceContext https://sharepoint.contoso.com/sites/crm/

也可以在 SharePoint 站点集的站点应用权限设置中找到 SharePoint 领域 ID。

  1. 登录到您将用于 Customer Engagement (on-premises) 文档管理的 SharePoint 网站集。

  2. 转到网站设置>网站应用权限

  3. 领域 ID 显示在应用程序标识符下方,@ 符号的右侧。 将其复制到剪贴板。 在“启用基于服务器的 SharePoint 集成向导”中,仅粘贴 GUID。 不要将标识符的任何部分粘贴到 @ 左侧。