Skip to content
Donghai's Blog
Go back

使用 ClientSecret 授权方式 在 .NET 控制台应用中连接 Dynamics 365

本文演示如何使用 ClientSecret 授权方式,在 .NET Framework 控制台应用中连接 Dynamics 365

TIP

我在另外一篇文章讲了 Office365 授权方式,有兴趣的话可以看看:

使用 Office365 授权方式 在 .NET 控制台应用中连接 Dynamics 365

Table of contents

Open Table of contents

前提条件

前提条件:拥有管理员权限,否则无法访问 Azure Active Directory / Entra ID 获取密钥等信息

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

连接主要使用的是 Microsoft.Xrm.Tooling.Connector 包,这个包提供了多种身份认证方式,但是根据我的实施经验,目前最常用的是以下2种认证方式

NameValueDescription
Office3654Office365 base login process
ClientSecret7Client Id + Client Secret Auth
InvalidConnection-1Invalid connection
AD0Active Directory Auth
Live1Live Auth
IFD2SPLA Auth
Claims3CLAIMS based Auth
OAuth5OAuth based Auth
Certificate6Certificate based Auth
ExternalTokenManagement99Host managed token

详细步骤

步骤(一) 获取 ClientId 和 ClientSecret

Step 1. 注册 Azure 应用

(1)访问并登录 Azure Portal

TIP

国际版请访问:https://portal.azure.com
世纪互联版请访问:https://portal.azure.cn

(2)在顶部的搜索框,搜索“应用注册” 并点击它 注册应用-01

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

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

注册应用-03

Step 2. 获取 ClientId

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

获取 ClientId

Step 3. 创建 ClientSecret

获取 ClientSecret - 01

TIP

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

获取 ClientSecret - 02

步骤(二)在 Power Platform 中添加应用程序用户

接下来需要将刚创建的应用与 Dynamics 365 环境关联上,步骤如下:

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

选择 “应用程序用户”

配置项说明:

完成后点击 “创建”

步骤(三)创建控制台应用程序进行连接测试

Step 1. 创建控制台应用程序

打开 Visual Studio —> 创建新项目,选择 “控制台应用(.NET Framework)”

新建项目-01

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

新建项目-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>App.config

需要替换的值:

为 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;Program.cs

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);
}Program.cs

添加测试代码

Step 5. 运行

  1. 将当前项目设为 启动项目

设当前项目为启动项目

  1. 使用 F5 或点击 “启动” 按钮

启动测试项目

  1. 如果程序成功输出 UserId,说明:

打印用户的Id


Share this post on:

Previous Post
如何配置AstroPaper主题(译)
Next Post
使用 Office365 授权方式 在 .NET 控制台应用中连接 Dynamics 365
BlogsClub Meo Forever Blog