将 Customer Engagement (on-premises) 连接到 Exchange Online
本文介绍如何在 Dynamics 365 (on-premises) 和 Exchange Online 之间配置基于服务器的身份验证。 下图解释了 Dynamics 365 (on-premises)、Azure Active Directory 和 Exchange Online之间的通信。
所需权限
Microsoft Dynamics 365
- 系统管理员安全角色。
- 如果您将自签名证书用于评估目的,则必须在运行 Microsoft Dynamics 365 Server 的计算机上拥有本地管理员组成员资格。
- 登录到 CRM 部署服务器所使用的帐户必须具有完全的本地管理员权限。
Exchange Online
- Office 365全局管理员成员。 这是管理级人员访问 Office 365 订阅和运行 Microsoft AzurePowerShell cmdlet 所必需的。
重要提示
在此部署中,Dynamics 365 管理员可以批准邮箱。
对 Microsoft Dynamics 365 和 Exchange Online 设置基于服务器的身份验证
按照提供的步骤顺序,设置 Dynamics 365 (on-premises) 与 Exchange Online 的通信。
重要提示
必须完全按所述步骤顺序来完成。 如果未完成任务(如返回错误消息的 Windows PowerShell 命令),您必须解决问题,然后继续执行下一命令、任务或步骤。
验证必备组件
在配置 Dynamics 365 (on-premises) 和 Exchange Online 以进行基于服务器的身份验证之前,必须满足下列必备条件:
- Microsoft Dynamics 365 Hybrid Connector。 Microsoft Dynamics 365 Hybrid Connector 是可以将基于服务器的身份验证用于 Microsoft Dynamics 365 (on-premises) 和 Exchange Online 的免费连接器。 详细信息:Microsoft Dynamics 365 Hybrid Connector
- 由受信任的证书颁发机构颁发并将用于 Dynamics 365 (on-premises) 和 Exchange Online 之间的身份验证的 x509 数字证书。 证书的 KeySpec 值 应为 1。 如果您在评估基于服务器的身份验证,则可以使用自签名证书。
- 验证运行异步处理服务的所有服务器是否都具有用于进行服务器到服务器身份验证的证书。
- 验证运行异步处理服务的帐户是否具有对证书私钥的读取权限。 详细信息:授予“异步处理服务”服务帐户对证书的读取权限
配置基于服务器的身份验证
在运行部署工具服务器角色的 Microsoft Dynamics 365 Server 上,启动适用于 Windows PowerShell 的 Azure Active Directory 模块。
准备证书。
将目录更改为 CertificateReconfiguration.ps1 文件所在的位置(默认为 C:\Program Files\Microsoft Dynamics CRM\Tools)。
$CertificateScriptWithCommand = ".\CertificateReconfiguration.ps1 -certificateFile c:\Personalcertfile.pfx -password personal_certfile_password -updateCrm -certificateType S2STokenIssuer -serviceAccount contoso\CRMAsyncService -storeFindType FindBySubjectDistinguishedName"
Invoke-Expression -command $CertificateScriptWithCommand
准备 Windows PowerShell 会话。
以下 cmdlet 使计算机接收远程命令和添加 Office 365 模块到 Windows PowerShell 会话。 有关这些 cmdlet 的详细信息,请参阅 Windows PowerShell 核心 Cmdlet。
Enable-PSRemoting -force
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-Module MSOnline
Install-Module MSOnlineExt
Import-Module MSOnline -force
Import-Module MSOnlineExt -force
连接到 Office 365。
在运行 Connect-MsolService 命令时,必须提供一个有效的 Microsoft 帐户,其中包含 Exchange Online 许可证所需的 Office 365 全局管理员成员资格。 有关此处所列每个 Azure Active Directory PowerShell 命令的详细信息,请参阅 MSDN:使用 Windows PowerShell 管理 Azure AD。
$msolcred = get-credential
connect-msolservice -credential $msolcred
- 设置证书。
$Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$Certificate.Import("c:\Personalcertfile.cer")
$CERCertificateBin = $Certificate.GetRawCertData()
$CredentialValue = [System.Convert]::ToBase64String($CERCertificateBin)
在 Exchange Online 中设置 Azure Active Directory 服务主体名称 (SPN)。
将 *.contoso.com 替换为 Microsoft Dynamics 365 Server 所在域的名称。
$RootDomain = "*.contoso.com"
$CRMAppId = "00000007-0000-0000-c000-000000000000"
New-MsolServicePrincipalCredential -AppPrincipalId $CRMAppId -Type asymmetric -Usage Verify -Value $CredentialValue
$CRM = Get-MsolServicePrincipal -AppPrincipalId $CRMAppId
$ServicePrincipalName = $CRM.ServicePrincipalNames
$ServicePrincipalName.Remove("$CRMAppId/$RootDomain")
$ServicePrincipalName.Add("$CRMAppId/$RootDomain")
Set-MsolServicePrincipal -AppPrincipalId $CRMAppId -ServicePrincipalNames $ServicePrincipalName
- 配置 Microsoft Dynamics 365 Server 以便与 Exchange 进行基于服务器的身份验证。
Add-PSSnapin Microsoft.Crm.PowerShell
$setting = New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity"
$setting.LogicalName = "ServerSettings"
$setting.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection"
$attribute1 = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ("S2SDefaultAuthorizationServerPrincipalId", "00000001-0000-0000-c000-000000000000")
$setting.Attributes.Add($attribute1)
$attribute2 = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ("S2SDefaultAuthorizationServerMetadataUrl", "https://accounts.accesscontrol.windows.net/metadata/json/1")
$setting.Attributes.Add($attribute2)
Set-CrmAdvancedSetting -Entity $setting
重要提示
对于在美国政府环境中使用具有 Government Community Cloud (GCC) High 的 Exchange Online 的客户,PowerShell 脚本中的 S2SDefaultAuthorizationServerMetadataUrl 必须更改为 https://login.microsoftonline.us/metadata/json/1。
设置 Exchange Online 租户 ID
- 在适用于 Windows PowerShell shell Azure Active Directory 模块中,运行下列命令。
$CRMContextId = (Get-MsolCompanyInformation).ObjectID
$CRMContextId
将显示的 GUID 复制到剪贴板。
通过运行以下命令更新组织的 S2STenantId,其中,OrganizationName 是组织的唯一名称,ExchangeOnlineTenantId 是上一步中检索到的 TenantId。
$organizationName = "OrganizationName"
$CRMContextId = "ExchangeOnlineTenantId"
$orgInfo = Get-CrmOrganization -Name $organizationName
$ID = $orgInfo.id
if($ID)
{
Set-CrmAdvancedSetting -ID $orgInfo.ID -configurationEntityName "Organization" -setting "S2STenantId" -value $CRMContextId
}
启用基于服务器的身份验证向导期间收到的错误
错误:身份验证失败。 当用于服务器到服务器身份验证的证书缺失或无效时,返回此错误。 若要解决,请更新或安装该证书并重试。
创建电子邮件服务器配置文件
- 转至设置>电子邮件配置>电子邮件服务器配置文件。
- 选择新建>Exchange Online(混合)。
- 对于 Exchange 电子邮件服务器配置文件,指定下列详细信息。
字段 | 说明 |
---|---|
姓名 | 为配置文件指定一个有意义的名称。 |
说明 | 键入关于电子邮件服务器配置文件的目标的简短说明。 |
服务器类型 | 预先填充 Exchange Online(混合)。 |
所有者 | 预先填充电子邮件服务器配置文件中的负责人的名称。 |
使用默认租户 ID | 如果使用上述 PowerShell 命令设置 Exchange Online 租户 ID(推荐),选择是 使用该 ID。 如果设置为否,则必须手动指定Exchange Online租户 ID(不推荐)。 |
Exchange Online租户 ID | 如果使用上述 PowerShell 命令设置 Exchange Online 租户ID (推荐),则该 ID 预先填充在此字段中。 |
自动发现服务器位置 | 预先填充 Exchange Online URL。 如果需要使用自动发现服务来确定服务器位置,请选择是(推荐)。 如果设置为否,则必须手动指定电子邮件服务器位置。 |
传入服务器位置和传出服务器位置 | 如果在自动发现服务器位置中选择否,则输入传入服务器位置和传出服务器位置的 URL。 |
其他设置 | |
处理此时间点之后的电子邮件 | 选择日期和时间。 对于所有与此配置文件关联的邮箱,在服务器端同步日期和时间后,接收电子邮件。 如果设置的值小于当前日期,则更改将应用于所有新关联的邮箱,并将提取其以前已处理的电子邮件。 |
最小轮询间隔(以分钟为单位) | 键入与此电子邮件服务器配置文件关联的邮箱的最小轮询间隔(以分钟为单位)。 轮询间隔确定服务器端同步轮询您的邮箱以获取新电子邮件的频率。 |
将失败的电子邮件移至“无法传送”文件夹 | 要将未送达的电子邮件移动到“无法送达”文件夹,请选择是。 如果在跟踪 Dynamics 365 中的电子邮件以及电子邮件活动时出现错误,且此选项设置为是,则电子邮件将移动到“无法送达”文件夹。 |
- 选择保存。
- 选择测试连接并查看结果。 若要诊断问题,请参阅接下来的部分。
排查 Exchange Online(混合)配置文件连接
如果您在运行测试连接时出现 Exchange Online(混合)配置文件连接问题,请使用测试连接对话框中的信息诊断并修复连接。
您可以在博客:在 Microsoft Dynamics CRM 2015 中测试和启用邮箱以及监视服务器端同步并进行疑难解答中查找有关经常性问题和其他疑难解答的信息。
配置默认电子邮件消息处理和同步
将服务器端同步设置为默认配置方法。
- 转至设置>电子邮件配置>电子邮件配置设置。
- 按照如下设置处理和同步字段:
- 服务器配置文件:您在上一节中创建的配置文件。
- 传入电子邮件:服务器端同步或电子邮件路由器
- 传出电子邮件:服务器端同步或电子邮件路由器
- 约会、联系人和任务:服务器端同步或电子邮件路由器
备注
如果您的用户在其桌面计算机上主要使用 Dynamics 365 for Outlook,则 Microsoft Dynamics 365 for Outlook 可能是一个较好的选择。
如果对未批准用户和队列的电子邮件处理窗体使用默认值(选中),您将需要按照下文中批准电子邮件的指示,审批用户邮箱的电子邮件和队列。
- 选择确定。
配置邮箱
若要将邮箱设置为使用默认配置文件,您必须先为电子邮件、约会、联系人和任务设置服务器配置文件和传递方法。
除了须具有管理员权限,您还须具有邮箱实体的读取和写入权限才能为邮箱设置传递方法。
请选择以下方法之一:
编辑邮箱以设置配置文件和传递方法
- 转至设置>电子邮件配置>邮箱。
- 选择可用邮箱。
- 选择您要配置的邮箱,然后选择编辑。
- 在更改多个记录窗体中的同步方法下,将服务器配置文件设置为您之前创建的 Exchange Server 配置文件。
- 将传入和传出电子邮件设置为服务器端同步或电子邮件路由器。
- 将约会、联系人和任务设置为服务器端同步。
备注
如果您的用户在其桌面计算机上主要使用 Dynamics 365 for Outlook,则 Microsoft Dynamics 365 for Outlook 可能是一个较好的选择。
- 选择更改。
批准电子邮件
您需要审批每个用户邮箱或队列然后该邮箱才能处理电子邮件。
- 转至设置>电子邮件配置>邮箱。
- 选择可用邮箱。
- 选择您要审批的邮箱,然后选择更多命令 (…)>批准电子邮件。
- 选择确定。
邮箱的测试配置
- 转至设置>电子邮件配置>邮箱。
- 选择可用邮箱。
- 选择要测试的邮箱,然后选择测试并启用邮箱。
这将测试所选邮箱的传入和传出电子邮件配置,并启用它们以进行电子邮件处理。 如果邮箱中有错误出现,则会在邮箱的警报墙上和配置文件所有者那儿显示警报。 根据错误性质,Microsoft Dynamics 365 会尝试在一段时间之后重新处理电子邮件,或禁止邮箱处理电子邮件。
电子邮件配置测试结果显示在邮箱记录的传入电子邮件状态、传出电子邮件状态,以及约会、联系人、任务状态字段中。 在邮箱配置成功完成后,也会生成警报。 此警报显示给邮箱所有者。
小费
如果无法同步邮箱的联系人、约会和任务,可以选择只将项目与此 Dynamics 365 组织中的 Exchange 同步,即使 Exchange 被设置为与不同的组织同步复选框。 阅读有关此复选框的详细信息。
测试所有与电子邮件服务器配置文件关联的邮箱的电子邮件配置
- 转至设置>电子邮件配置>电子邮件服务器配置文件。
- 选择创建的配置文件,然后选择测试和启用邮箱。
当测试电子邮件配置时,异步作业在后台运行。 完成测试可能耗费几分钟。 Microsoft Dynamics 365 测试所有与 Exchange Server 配置文件关联的邮箱的电子邮件配置。 对于使用服务器端同步配置以同步约会、任务和联系人的邮箱,它还会进行检查以确保配置正确。
小费
如果无法同步邮箱的联系人、约会和任务,可以选择只将项目与此 Dynamics 365 组织中的 Exchange 同步,即使 Exchange 被设置为与不同的组织同步复选框。 阅读有关此复选框的详细信息。
授予“异步处理服务”服务帐户对证书的读取权限
此过程说明如何授予“异步处理服务”服务帐户对证书私钥的读取访问权限。
- 在证书所在的计算机上,在搜索框中输入 mmc.exe,然后按 Enter 键。
- 在 Microsoft 管理控制台中,选择文件,然后选择添加/删除管理单元。
- 依次选择证书、添加、计算机帐户、下一步、本地计算机,最后选择完成。
- 选择确定关闭添加或删除管理单元对话。
- 展开证书 –(本地计算机),展开个人,然后选择证书。
- 右键单击您用来通过 Exchange Online 进行身份验证的证书,然后选择所有任务>管理私钥。
- 选择添加,搜索并选择运行异步处理服务的服务帐户,选择允许读取权限,然后选择确定。
- 重启 Microsoft Dynamics CRM 异步处理服务和 Microsoft Dynamics CRM 异步处理服务(维护)服务。