前言

本文演示如何使用 ClientSecret(客户端密钥) 授权方式,在 .NET Framework 控制台应用 中连接 Dynamics 365。

连接主要使用的是Microsoft.Xrm.Tooling.Connector包,这个包提供了多种身份认证方式,但从我的项目经验来看,最常用主要是以下两种:

  • Office365(用户名 + 密码)
  • ClientSecret(应用程序 + 密钥)

Microsoft.Xrm.Tooling 支持的授权方式一览

Name Value Description
InvalidConnection -1 Invalid connection
AD 0 Active Directory Auth
Live 1 Live Auth
IFD 2 SPLA Auth
Claims 3 CLAIMS based Auth
Office365 4 Office365 base login process
OAuth 5 OAuth based Auth
Certificate 6 Certificate based Auth
ClientSecret 7 Client Id + Client Secret Auth
ExternalTokenManagement 99 Host managed token

详细步骤

先决条件
默认你拥有 管理员权限,否则无法访问 Azure Active Directory / Entra ID 相关配置。

一、获取 ClientId 和 ClientSecret

Step 1. 注册应用

(1)访问并登录 Azure Portal.

(2)在顶部搜索框中输入 “应用注册”,并点击进入 注册应用-01

(3)点击 “新注册” 注册应用-02

(4)填写:

  • 应用名称
  • 选择受支持的账户类型
  • 点击 “注册” 注册应用-03

Step 2. 获取 ClientId

完成应用注册后,在 “概览(Overview)” 页面中可以看到:

应用程序(客户端)ID → 即 ClientId,请将该值复制并保存,后续配置会用到

获取 ClientId

Step 3. 创建 ClientSecret

  • 打开 “证书和密码”
  • 选择 客户端密码
  • 点击 “+ 新客户端密码”
  • 填写描述并设置有效期
  • 点击 “添加”
  • 创建完成后,请立即复制 ClientSecret 的“值”并保存

注意:页面刷新后该值将被隐藏,若未保存只能删除后重新创建。

获取 ClientSecret - 01

获取 ClientSecret - 02


二、在 Power Platform 中添加应用程序用户

接下来需要将刚创建的应用,与 D365 环境关联。

  • 登录 Power Platform 管理中心
  • 选择目标环境 → 设置
  • 进入 “应用程序用户”
  • 点击 “+ 新建应用用户

配置项说明:

  • 应用:选择刚才在 Azure 中注册的应用
  • 业务部门:建议选择 根业务部门
  • 安全角色:至少分配 系统管理员

完成后点击 创建。

选择 “应用程序用户”


三、创建 .NET 控制台应用进行测试

Step 1. 新建控制台项目

  • 打开 Visual Studio
  • 创建 控制台应用(.NET Framework)
  • 输入项目名称并选择目标框架
  • 点击 创建

新建项目-01

新建项目-02

Step 2. 安装必要的 NuGet 包

为项目安装以下依赖:

  1. Microsoft.CrmSdk.CoreAssemblies
  2. System.Configuration.ConfigurationManage

操作路径:

项目 → 右键 → 管理 NuGet 程序包 → 浏览 → 搜索 → 安装

为项目添加依赖包-01

为项目添加依赖包-02

Step 3. 配置 App.config 连接字符串

在 App.config 中添加以下内容,并替换为你自己的参数:

<connectionStrings>
  <!-- Dev 环境(ClientSecret 认证方式) -->
  <add name="Dev-ClientSecret" connectionString="
     Url=https://xxx.crm.dynamics.cn/;
     AuthType=ClientSecret;
     ClientId=yourClientId;
     ClientSecret=yourClientSecret;" />
</connectionStrings>

参数说明:

  • Url:D365 环境访问地址
  • ClientId:应用程序 ID
  • ClientSecret:客户端密钥

为 App.config 文件添加连接信息

Step 4. 添加测试代码

在 Program.cs 中:

引用命名空间

using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Configuration;

Main 方法代码

string connectionStr = ConfigurationManager.ConnectionStrings["Dev-ClientSecret"].ConnectionString;
CrmServiceClient client = new CrmServiceClient(connectionStr);
if (client.IsReady)
{
    IOrganizationService orgServiceorgService = client;
    // 使用 WhoAmI 进行测试
    WhoAmIResponse resTest = (WhoAmIResponse)orgServiceorgService.Execute(new WhoAmIRequest());
    Console.Write($"UserId: {resTest.UserId}");
    Console.Read();
}
else
{
    throw new Exception(client.LastCrmError);
}

添加测试代码

Step 5. 运行并验证

  • 将当前项目设为 启动项目
  • 使用 F5 或点击 启动
  • 如果程序成功输出 UserId,说明:
    • ✅ ClientSecret 认证成功
    • ✅ 已成功连接 Dynamics 365
    • ✅ 可继续使用 IOrganizationService 进行 CRUD 操作

设当前项目为启动项目

启动测试项目

打印用户的Id

如果本文对你有所帮助,可以请我喝杯咖啡

(完)