keijyu's blog keijyu's blog
首页
  • CRM
  • 学习笔记

    • 数据库
商业
个人
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

keijyu

喜欢折腾的IT初心者
首页
  • CRM
  • 学习笔记

    • 数据库
商业
个人
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 运维

    • 微软生态
    • 配置基于服务器端同步的身份验证
    • CRM
    • 建站

    • 学习笔记

    • 技术
    • 运维
    keijyu
    2025-08-12
    目录

    配置基于服务器端同步的身份验证

    ①Dynamics 发出同步请求 → ②③先去 Azure AD,用 Entra ID App 的身份拿到 Exchange Online 的 OAuth 令牌 → ④拿令牌调用 Exchange Web Services → 完成邮件/日历/任务的收发与同步。

    一句话总结,通过Entra ID App让 Azure AD 认可 Dynamics op版的身份,从而允许它访问 Exchange Online


    # 0. 前提

    Dynamics CRM的op服务器使用Graph Powershell(微软已于2024.3.31弃用了MSOnline PowerShell模块)

    # 1. 生成并安装证书

    # 1.1 生成证书

    生成证书后会得到下列参数,在后续步骤3.1中使用:

    $privateKeyPassword

    • 证书私钥的密码(SecureString 类型)。

    $pfxFilePath

    • PFX 文件路径(包含证书和私钥的文件)。

    # 1.2 安装证书

    目的:把 PFX 证书导入到服务器证书存储 + 给 CRM 异步服务账号授予私钥读取权限 + 在 CRM 配置数据库里登记这个证书(类型为 S2STokenIssuer)

    1. 以管理员身份,在运行部署工具服务器角色的 Microsoft Dynamics 365 Server 上,启动适用于 Windows PowerShell 的 Azure Active Directory 模块。

      • **目的:**用于后续3.1运行的 ConfigureCrmServerSideSync.ps1脚本中和AAD通信
    2. 将PowerShell当前目录更改为 CertificateReconfiguration.ps1 文件所在的位置(默认为 C:\Program Files\Microsoft Dynamics CRM\Tools)。

      cd "C:\Program Files\Microsoft Dynamics CRM\Tools"
      
      1
    3. 替换下面命令中的:

      (1)certificateFile 为【PFX 证书文件的完整路径】;

      (2)personal_certfile_password为【导出 PFX 时设置的私钥密码】;

      (3)contoso\CRMAsyncService为【运行 Dynamics 365 异步处理服务(Async Service)的域账号】

      $CertificateScriptWithCommand = ".\CertificateReconfiguration.ps1 -certificateFile c:\Personalcertfile.pfx -password personal_certfile_password -updateCrm -certificateType S2STokenIssuer -serviceAccount contoso\CRMAsyncService -storeFindType FindBySubjectDistinguishedName"
      Invoke-Expression -command $CertificateScriptWithCommand
      
      1
      2

    # 2. 注册应用程序

    用于 Dynamics 与 Exchange Online 之间的通信。注册应用程序会在应用与Microsoft 标识平台之间建立信任关系。 信任是单向的:你的应用信任Microsoft 标识平台,而不是相反。 创建后,应用程序对象不能在不同的租户之间移动。

    注意:注册应用程序需要用和1中远程登录crm服务器安装证书的同一个身份。

    # 2.1 注册应用程序

    • 路径:Azure Portal > Microsoft Entra ID > App registrations > New registration

    # 2.2 配置平台设置

    • 目的:输入应用的 重定向 URI 。 此 URI 是 Microsoft 标识平台重定向用户客户端并在身份验证后发送安全令牌的位置。

    • 路径:注册完成后,Microsoft Entra 管理中心将显示应用注册的“概述”窗格。在该页面的Manage > Authentication(Preview)中,点击Add Redirect URI

    # 2.3 添加凭据

    • 目的:凭据由访问 Web API 的 机密客户端应用程序 (opens new window) 使用。 机密客户端的示例包括 Web 应用、其他 Web API 或服务类型和守护程序类型应用程序。 凭据允许应用程序以自身身份进行身份验证,无需用户在运行时进行交互。
    • 路径:该页面的Manage > Certificates&secrets > New client secret
      • 客户端机密生存期限制为两年 (24 个月) 或更短。 不能指定超过 24 个月的自定义生存期。
      • Microsoft建议将过期值设置为小于 12 个月。
      • 记录要在 客户端应用程序代码中使用的机密值。 离开此页面后 ,永远不会再次显示 此机密值。

    # 2.4 向新应用添加并授予以下API权限

    Application.ReadWrite.All、Orgaization.Read.All、User.Read

    • 目的:
    # 2.4.1 添加权限

    **路径:**该页面的Manage > API permissions > Add a permission

    # 2.4.2 由管理员授予权限

    # 3. 在 Dynamics 365 中配置 S2S 身份验证

    在Dynamics 365 CRM的应用服务器上,以管理员身份启动 Azure Active Directory PowerShell 模块

    # 3.1 运行 PowerShell 脚本

    • 目的:运行CertificateReconfiguration.ps1脚本,这一步会把 S2S 身份信息写入 Dynamics 配置数据库。
    $ConfigureCrmServerSideSyncWithCommand = ".\ConfigureCrmServerSideSync.ps1 -privateKeyPassword (ConvertTo- SecureString 'personal_certfile_password' -AsPlainText -Force) -pfxFilePath c:\Personalcertfile.pfx -organizationName organization_name -microsoftEntraIdTenantIdOrDomainName microsoft_entraid_tenantid_or_domain_name -ClientID app_id_from_step3 -ClientSecret -client_secret" 
    Invoke-Expression -command $ConfigureCrmServerSideSyncWithCommand
    
    1
    2

    带下划线的占位符替换成下列实际值填入:

    (1) 在步骤1中得到的:

    • $privateKeyPassword【证书私钥的密码(SecureString 类型)】

    $pfxFilePath【PFX 文件路径(包含证书和私钥的文件)】

    (2)$organizationName【CRM组织名称】

    (3)步骤2中得到的:

    • $microsoftEntraIdTenantIdOrDomainName【Microsoft Entra ID(Azure AD)的租户 ID 或租户主域名比如contoso.onmicrosoft.com】
    • $clientID【在 Entra ID 中注册的应用程序 ID(Application ID)】
    • $clientSecret【上述应用的客户端密钥(client secret)】

    # 4. 设置 Exchange Online 租户 ID

    1. 在适用于 Windows PowerShell shell Azure Active Directory 模块中,运行下列命令。

      $CRMContextId = (Get-MsolCompanyInformation).ObjectID
      $CRMContextId
      
      1
      2
    2. 将显示的 GUID 复制到剪贴板。

    3. 通过运行以下命令更新组织的 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
              }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

    # 5. 创建电子邮件服务器配置文件

    • 创建 Exchange Online 的 Email Server Profile
    • 指定身份验证类型为 Server-to-Server

    # 6. 参考链接

    将 Customer Engagement (on-premises) 连接到 Exchange Online (opens new window)

    在EntraID上登录APP (opens new window)

    编辑 (opens new window)
    #Azure
    上次更新: 2025/08/15, 08:20:45
    微软生态
    CRM

    ← 微软生态 CRM→

    最近更新
    01
    微软生态
    08-15
    02
    git踩的坑
    07-01
    03
    Excel快速规范粘贴图片
    06-20
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 keijyu
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式