使用 ClientSecret 授权方式 在 .NET 控制台应用中连接 Dynamics 365
955 字
5 分钟
使用 ClientSecret 授权方式 在 .NET 控制台应用中连接 Dynamics 365
前提条件
- 拥有管理员权限,否则无法访问 Azure Active Directory / Entra ID 获取密钥等信息
Microsoft.Xrm.Tooling 支持的授权方式一览
连接主要使用的是 Microsoft.Xrm.Tooling.Connector 包,这个包提供了多种身份认证方式,但是根据我的实施经验,目前最常用的是以下2种认证方式
- Office365(用户名 + 密码)
- ClientSecret(应用程序 + 密钥)
| Name | Value | Description |
|---|---|---|
| Office365 | 4 | Office365 base login process |
| ClientSecret | 7 | Client Id + Client Secret Auth |
| InvalidConnection | -1 | Invalid connection |
| AD | 0 | Active Directory Auth |
| Live | 1 | Live Auth |
| IFD | 2 | SPLA Auth |
| Claims | 3 | CLAIMS based Auth |
| OAuth | 5 | OAuth based Auth |
| Certificate | 6 | Certificate based Auth |
| ExternalTokenManagement | 99 | Host managed token |
详细步骤
步骤(一) 获取 ClientId 和 ClientSecret
Step 1. 注册 Azure 应用
(1)访问并登录 Azure Portal
Tip
国际版请访问:https://portal.azure.com
世纪互联版请访问:https://portal.azure.cn
(2)在顶部的搜索框,搜索“应用注册” 并点击它

(3)点击“+新注册”

(4)在弹出的页面输入一个有意义的应用程序名称 –> 勾选受支持的账号类型 –> 点击“注册”按钮

Step 2. 获取 ClientId
完成应用注册后,在 “概览(Overview)” 页面中可以看到 应用程序(客户端)ID ,请将该值复制并保存,后续配置会用到

Step 3. 创建 ClientSecret
- 打开 “证书和密码”
- 选择 客户端密码
- 点击 “+ 新客户端密码”
- 填写描述并设置有效期
- 点击 “添加”

- 创建完成后,请立即复制 ClientSecret 的“值”并保存
Tip
页面刷新后该值将被隐藏,若未保存只能删除后重新创建

步骤(二)在 Power Platform 中添加应用程序用户
接下来需要将刚创建的应用与 Dynamics 365 环境关联上,步骤如下:
登录 Power Platform 管理中心 —> 选择目标环境 —> 设置 —> 进入 “应用程序用户” —> 点击 “+ 新建应用用户

配置项说明:
- 应用:选择刚才在 Azure 中注册的应用
- 业务部门:建议选择 根业务部门
- 安全角色:至少分配 系统管理员
完成后点击 “创建”
步骤(三)创建控制台应用程序进行连接测试
Step 1. 创建控制台应用程序
打开 Visual Studio —> 创建新项目,选择 “控制台应用(.NET Framework)”

输入项目名称 —> 选择 “.NET Framework 版本” —> 点击 “创建”

Step 2. 添加NuGet包
为项目安装以下依赖:
Microsoft.CrmSdk.CoreAssembliesSystem.Configuration.ConfigurationManage
下面是具体的操作步骤说明和截图:
项目 —> 右键 —> 管理 NuGet 程序包 —>

浏览 —> 搜索 —> 安装

Step 3. 为 App.config 添加连接信息
在 App.config 文件中添加连接字符串配置:
- 打开 App.config 文件
- 在
<configuration>节点下添加<connectionStrings>节 - 替换以下占位符为实际值:
<connectionStrings> <!-- Dev 环境(ClientSecret 认证方式) --> <add name="Dev-ClientSecret" connectionString=" Url=https://xxx.crm.dynamics.cn/; AuthType=ClientSecret; ClientId=yourClientId; ClientSecret=yourClientSecret;" /></connectionStrings>需要替换的值:
- Url —> Dynamics 365 环境访问地址
- ClientId —> 应用程序 ID
- ClientSecret —> 客户端密钥

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 操作

支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
使用 ClientSecret 授权方式 在 .NET 控制台应用中连接 Dynamics 365
https://mgrowup.com/posts/dynamics365/console-app-clientsecret-auth/相关文章智能推荐
1
使用 Office365 授权方式 在 .NET 控制台应用中连接 Dynamics 365
Dynamics 365本文演示如何使用Office365授权方式,在Dot NET Framework控制台应用中连接Dynamics 365
2
使用API调式工具访问Dynamics 365
Dynamics 365本文详细介绍如何使用API测试工具访问Dynamics 365,包括注册Azure应用、获取ClientId和ClientSecret、配置身份验证和API权限,以及在Postman中设置环境变量和获取访问令牌
3
Dynamics 365项目中常用的SQL语句(持续更新)
Dynamics 365本文针对Dynamics 365的日常运维和管理需求,整理些实用的SQL查询脚本
4
Dynamics 365 SSRS导出PDF
Dynamics 365通过自定义JavaScript按钮调用现有报表,绕过标准“另存为”的多格式限制,实现一键导出PDF
5
Dynamics 365消息提醒(In-App Notification)
Dynamics 365本文以负责人变更场景为例,讲解在Dynamics 365中实现应用内消息提醒(In-App Notification)的三种方式
随机文章随机推荐
