使用内部部署 Dynamics CRM Online 和 SharePoint 配置基于服务器的身份验证
发布日期: 2016年11月
适用于: Dynamics CRM 2015
引入 Microsoft Dynamics CRM Online 2015 更新 1 后,适用于文档管理的基于服务器的 Microsoft SharePoint 集成现在可用于连接内部部署 Microsoft Dynamics CRM Online 与 SharePoint。 当您使用基于服务器的身份验证时,Azure Active Directory 访问控制服务 (ACS) 被用作信任经纪,因此用户无需登录到 SharePoint。 此外,需要弃用 SharePoint 沙盒功能的列表控件,无需显示 Microsoft Dynamics 365 视图中的 SharePoint 文档。
所需权限
Office 365
- Office 365 全局管理员成员。 这是管理级人员访问 Microsoft Office 365 订阅和运行 Microsoft AzurePowerShell cmdlet 所必需的。
Microsoft Dynamics CRM Online
“运行 SharePoint 集成向导”特权。 这要求在 Microsoft Dynamics 365 中运行“启用基于服务器的身份验证”向导。
默认情况下,系统管理员的安全角色有此权限。
SharePoint 内部部署
- 场管理员组成员。 这要求在 PowerShell 服务器上运行多个 SharePoint 命令。
使用内部部署 CRM Online 和 SharePoint 设置服务器到服务器身份验证
按照提供的步骤顺序使用 SharePoint 2013 内部部署设置 CRM Online。
重要
必须完全按所述步骤顺序来完成。 如果未完成任务(如返回错误消息的 PowerShell 命令),您必须解决问题,然后继续执行下一命令、任务或步骤。
验证必备组件
在对基于服务器的身份验证配置 Microsoft Dynamics CRM Online 和内部部署 SharePoint 之前,必须满足下列先决条件。
SharePoint 先决条件
带有 Service Pack 1 (SP1) 或更高版本的 Microsoft SharePoint 2013(内部部署)
重要
Microsoft SharePoint Foundation 2013 版本不支持用于 Microsoft Dynamics 365 文档管理。
SharePoint Foundation 2013 修补程序 KB2883081,2014年 8 月 12 日 (Sts-x-none.msp)
重要
以下是更新 KB2883081 的先决条件,而且也可能需要。
SharePoint配置
必须仅为单个服务器场部署配置 SharePoint。
SharePoint 网站必须通过 Internet 进行访问。 反向代理可能要求 SharePoint 身份验证。 详细信息:为 SharePoint Server 2013 hybrid 配置反向代理设备
SharePoint 网站必须配置为使用 SSL (HTTPS),并且必须由公共根证书颁发机构颁发身份验证。详细信息:SharePoint:关于安全通道 SSL 证书
用于基于声明的身份验证在 SharePoint 和 Microsoft Dynamics 365 之间映射的一个可靠的用户属性。详细信息:选择一个基于声明的身份验证映射类型
其他先决条件
SharePoint Online许可证。Microsoft Dynamics CRM Online 至 SharePoint 内部部署的基于服务器的身份认证必须具有 Azure Active Directory 中注册的 SharePoint 服务主体名称 (SPN)。 为了实现此目的,至少需要一个 SharePoint Online 用户许可证。SharePoint Online 许可证可以派生自单个用户许可证并且通常来自以下操作之一:
SharePoint Online 订阅。 任何 SharePoint Online 计划都是足够的,即使许可证没有分派给用户。
包含 SharePoint Online 的 Office 365 订阅。 例如,如果您拥有 Office 365 E3,您拥有合适的许可,即使许可证没有分派给用户。
有关这些计划的详细信息,请参阅 Office 365:选择计划和比较 SharePoint 选项
以下软件功能要求运行本主题介绍的 PowerShell cmdlets。
重要
在编写这个模块时,IT 专家 RTW 版的 Microsoft Online Services 登录助手是存在问题。 在解决问题前,建议您使用 Beta 版本。详细信息:Microsoft Azure 论坛:无法安装用于 Windows PowerShell 的 Azure Active Directory 模块。MOSSIA 未安装。
使用相应的基于声明的身份验证类型在 Microsoft Dynamics CRM Online 和 SharePoint 内部部署之间进行映射。 默认情况下,使用电子邮件地址。详细信息:授予 Microsoft Dynamics CRM 权限访问 SharePoint 和配置基于声明的身份验映射
在 ACS 中更新 SharePoint Server SPN
在 SharePoint 内部部署服务器上的 SharePoint 2013 Management Shell 中,请给定顺序运行 PowerShell 命令。
准备 PowerShell 会话。
以下 cmdlet 使计算机接收远程命令和添加 Office 365 模块到 PowerShell 会话。 有关这些 cmdlet 的详细信息,请参阅 Windows PowerShell Core Cmdlets。
Enable-PSRemoting -force New-PSSession Import-Module MSOnline -force Import-Module MSOnlineExtended -force
连接到 Office 365。
在运行 Connect-MsolService 命令时,必须提供一个有效的 Microsoft 帐户,其中包含 SharePoint Online 许可证所需的 Office 365 全局管理员资格。
有关此处所列每个 Azure Active DirectoryPowerShell 命令的详细信息,请参阅 MSDN:使用 Windows PowerShell 管理 Azure AD。
$msolcred = get-credential connect-msolservice -credential $msolcred
设置 SharePoint 主机名称。
对可变*“主机名”* 设置的值必须为 SharePoint 网站集的完整主机名。 主机名必须是该网站集 URL 派生出来的并区分大小写。 在此示例中,网站集 URL 是 *https://SharePoint.constoso.com/sites/salesteam*,因此,主机名应为 SharePoint.contoso.com。
$HostName = "SharePoint.contoso.com"
获取 Office 365 对象(租户)ID SharePoint Server 服务主体名称 (SPN)。
$SPOAppId = "00000003-0000-0ff1-ce00-000000000000" $SPOContextId = (Get-MsolCompanyInformation).ObjectID $SharePoint = Get-MsolServicePrincipal -AppPrincipalId $SPOAppId $ServicePrincipalName = $SharePoint.ServicePrincipalNames
在 ACS 中设置 SharePoint Server 服务主体名称 (SPN)。
$ServicePrincipalName.Add("$SPOAppId/$HostName") Set-MsolServicePrincipal -AppPrincipalId $SPOAppId -ServicePrincipalNames $ServicePrincipalName
上述命令完成后不会关闭 SharePoint 2013 Management Shell,并继续执行下一步。
更新 SharePoint 领域以匹配 SharePoint Online
在 SharePoint 内部部署服务器上的 SharePoint 2013 Management Shell 中,运行 Windows PowerShell 命令。
以下命令要求 SharePoint 场管理员成员资格并设置 SharePoint 本地场的身份验证。
警告
运行此命令更改 SharePoint 本地场的身份验证领域。 对于使用现有安全令牌服务 (STS) 的应用程序,则会导致使用访问令牌的其他应用程序出现异常行为。 更多详细信息:Set-SPAuthenticationRealm。
Set-SPAuthenticationRealm -Realm $SPOContextId
为 ACS 在 SharePoint 上创建一个受信任安全令牌
在 SharePoint 内部部署服务器上的 SharePoint 2013 Management Shell 中,请给定顺序运行 PowerShell 命令。
以下命令需要 SharePoint 场管理员成员资格。
有关这些 PowerShell 命令的详细信息,请参阅使用 Windows PowerShell cmdlets 管理 SharePoint 2013 安全。
启用 PowerShell 会话更改 SharePoint 场的安全令牌服务。
$c = Get-SPSecurityTokenServiceConfig $c.AllowMetadataOverHttp = $true $c.AllowOAuthOverHttp= $true $c.Update()
设置元数据端点。
$metadataEndpoint = "https://accounts.accesscontrol.windows.net/" + $SPOContextId + "/metadata/json/1" $acsissuer = "00000001-0000-0000-c000-000000000000@" + $SPOContextId $issuer = "00000007-0000-0000-c000-000000000000@" + $SPOContextId
在 ACS 中创建新令牌控制服务应用代理。
New-SPAzureAccessControlServiceApplicationProxy -Name "ACSInternal" -MetadataServiceEndpointUri $metadataEndpoint -DefaultProxyGroup
备注
New- SPAzureAccessControlServiceApplicationProxy 命令可能会返回一条错误消息,指示已经存在同名的 ACS 应用程序代理。 如果已存在已命名的 ACS 应用程序代理,则可以忽略此错误。
在 SharePoint 内部部署为 ACS 创建新令牌控制服务颁发者。
$acs = New-SPTrustedSecurityTokenIssuer –Name "ACSInternal" –IsTrustBroker:$true –MetadataEndpoint $metadataEndpoint -RegisteredIssuerName $acsissuer
授予 Microsoft Dynamics CRM 权限访问 SharePoint 和配置基于声明的身份验映射
在 SharePoint 内部部署服务器上的 SharePoint 2013 Management Shell 中,请给定顺序运行 PowerShell 命令。
以下命令需要 SharePoint 网站集管理成员资格。
使用 SharePoint 网站集注册 Microsoft Dynamics 365。
输入 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"
授予 Microsoft Dynamics 365 应用程序对 SharePoint 网站的访问权限。 用您的 SharePoint 网站 URL 替换 *https://sharepoint.contoso.com/sites/crm/*。
备注
在下面的示例中,通过使用 Scope 网站集参数, Dynamics 365 应用程序被授予对指定 SharePoint 网站集的访问权限。 Scope 参数接受以下选项: 选择最适合 SharePoint 配置的范围。
site。 仅授予 Dynamics 365 应用程序对指定 SharePoint 网站的访问权限。 不授予对已命名网站下任何子网站的访问权限。
sitecollection。 授予 Dynamics 365 应用程序对指定 SharePoint 网站集内所有网站和子网站的访问权限。
sitesubscription。 授予 Dynamics 365 应用程序对指定 SharePoint 场内所有网站(包括所有网站集、网站和子网站)的访问权限。
$app = Get-SPAppPrincipal -NameIdentifier $issuer -Site "https://sharepoint.contoso.com/sites/crm/" Set-SPAppPrincipalPermission -AppPrincipal $app -Site $site.Rootweb -Scope "sitecollection" -Right "FullControl"
设置基于声明的身份验证映射类型。
重要
默认情况下,基于声明的身份验证映射会使用用户的 Microsoft 帐户 电子邮件地址和用户的 SharePoint 内部部署“工作电子邮件”地址进行映射。 当您使用时,该用户的电子邮件地址必须在这两个系统之间匹配。 有关详细信息,请参阅选择一个基于声明的身份验证映射类型。
$map1 = New-SPClaimTypeMapping -IncomingClaimType "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
运行“启用基于服务器的 SharPoint 集成”向导
在 Microsoft Dynamics 365 应用程序中,请执行以下步骤。
转到“设置” > “文档管理”。
在“文档管理”区域中,选择“启用基于服务器的 SharePoint 集成”。
查看该信息,然后选择“下一步”。
对于 SharePoint 网站,请选择“内部部署”,然后选择“下一步”。
输入 SharePoint 内部部署网站集 URL,例如 *https://sharepoint.contoso.com/sites/crm*。 网站必须为 SSL 配置。
选择“下一步”。
验证网站节出现。 如果所有网站确定有效,请选择“启用”。 如果一个或多个网站都判定无效,请参阅 基于服务器的身份验证疑难解答。
选择您要放入“文档管理”的实体
默认情况下,包括客户、文章、潜在顾客、产品、报价单和销售宣传资料实体。 在 Microsoft Dynamics 365 的“文档管理设置”中,您可以添加或删除想用于 SharePoint 文档管理的实体。转到“设置” > “文档管理”。详细信息:客户中心:启用实体的文档管理
选择一个基于声明的身份验证映射类型
默认情况下,基于声明的身份验证映射会使用用户的 Microsoft 帐户 电子邮件地址和用户的 SharePoint 本地工作电子邮件地址用于映射。 请注意,任何基于声明的身份验证类型的值(如电子邮件地址),在 Microsoft Dynamics CRM Online 和 SharePoint 之间必须匹配。Office 365 目录同步可以提供帮助。详细信息:在 Microsoft Azure 中部署 Office 365 目录同步 (DirSync)使用不同类型的基于声明的身份验证映射,请参阅 MSDN:为 SharePoint 基于服务器的集成定义自定义声明映射。
重要
若要启用工作电子邮件属性,SharePoint 本地需已配置和启动 User Profile Service 应用程序。 要在 SharePoint 中启用 User Profile Service 应用程序,请参阅在 SharePoint Server 2013 中创建、编辑或删除 User Profile Service 应用程序。 若要更改用户属性(如工作电子邮件),请参阅编辑用户配置文件属性。 有关 User Profile Service 应用程序的详细信息,请参阅SharePoint Server 2013 中的 User Profile Service 应用程序概述。
另请参阅
基于服务器的身份验证疑难解答
使用 Microsoft Dynamics CRM 设置 SharePoint 集成
© 2016 Microsoft Corporation。 保留所有权利。 版权