使用 Console App 连接 CRM —— ClientSecret AuthType

前言

本文使用的是 ClientSecret 授权方式在 控制台应用(.NET Framework) 连接 D365。

其实Microsoft.Xrm.Tooling.Connector 提供了多种授权方式,但就本人项目经验来说,经常使用的应该是以下两种:Office365 和 ClientSecret。

授权方式清单如下:

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 + Secret Auth type.
ExternalTokenManagement 99 Enabled Host to manage Auth token for CRM connections.

详细步骤

先决条件:默认你已是 “管理员” 用户,否则无法访问 Azure Active Directory 门户。

1. 获取 ClientId 和 ClientSecret

Step 1. 注册应用

(1)访问并登录 Azure Portal.

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

注册应用-01

(3)点击 “新注册”

注册应用-02

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

注册应用-03

Step 2. 获取 ClientId

完成 Step 1. 之后,我们可以从 “概览” 找到 应用程序 ID (ClientId) , 把它拷贝到记事本,等会会用到。

获取 ClientId

Step 3. 获取 ClientSecret

菜单栏选择 “证书和密码” –> 客户端密码 –> “ + 新客户端密码 ” –> 在弹出的页面填写有意义的说明 –> 勾选截止日期 –> 点击 “添加按钮”

获取 ClientSecret - 01

“客户端密码” 添加完成后,在列表中就可以看到 ClientSecret,把它拷贝到记事本,等会会用到(页面刷新后这个 “ 值 (ClientSecret)” 会加密,如果你没有及时拷贝,可以将它删除,然后重新创建)。

获取 ClientSecret - 02

2. 添加 应用程序用户

(1)登录 “Power Platform 管理中心” –> 选择环境 –> 点击 “设置”

(2)选择 “应用程序用户”

选择 “应用程序用户”

在顶部菜单栏中选择 “ + 新建应用用户 ” –> 选择 “应用” (Step 1. 创建的应用) –> 选择业务部门(建议选择 “根业务部门”) –> 安全角色选择 “系统管理员” –> 点击 “创建” 按钮

3. 创建控制台应用程序进行测试

Step 1. 新建项目

  1. 打开 Visual Studio 并创建一个新的 控制台应用(.NET Framework) 项目

  2. 输入一个有意义的项目名称 –> 选择框架后 –> 单击 “创建”

新建项目-01

新建项目-02

Step 2. 为项目添加依赖包

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

右键单击你的项目 –> 管理 NuGet 程序包

为项目添加依赖包-01

在新窗口中,选择 “浏览” 选项卡并搜索 Microsoft.CrmSdk.CoreAssemblies

在结果中,选择 Microsoft.CrmSdk.CoreAssemblies 并在右侧单击 安装 按钮,在弹出的窗口中点击 “接受”。

为项目添加依赖包-02

现在 Microsoft.CrmSdk.CoreAssemblies 依赖包已经安装好了,接下来请用同样的操作,安装 System.Configuration.ConfigurationManage 依赖包。

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

在 App.config 添加连接信息(connectionStrings),将以下信息替换为你的信息:

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

BASH
 <connectionStrings>
  
  <!-- Dev 环境(ClientSecret 认证方式) -->
  <add name="Dev-ClientSecret" connectionString="
     Url=urlofyourdynamics365instance;
     AuthType=ClientSecret;
     ClientId=yourClientId;
     ClientSecret=yourClientSecret;" />
 
 </connectionStrings>
点击展开查看更多

Step 4. 添加测试代码

添加测试代码

(1)打开 Program.cs 文件

(2)将顶部的 using 替换为以下内容:

CSHARP
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Configuration;
点击展开查看更多

(2)在 Main 方法中,添加以下代码

CSHARP
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. 测试

(1)右键单击你的项目 –> 设为启动项目

设当前项目为启动项目

(2)使用 F5 或 点击顶部的 启动 按钮来执行程序

启动测试项目

如果一切正常,将打印用户的Id,接下来你可以尝试使用 IOrganizationService 进行 CRUD 操作了。

打印用户的Id

版权声明

作者: Donghai

链接: https://mgrowup.com/posts/d365/conn-to-crm-using-console-app-using-clientsecret/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

评论

Current Language: zh-cn

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键