使用 Xrm.Tooling.CrmConnectControl 的多重身份验证

Using Multi Factor authentication with Xrm.Tooling.CrmConnectControl

我尝试使用可在 https://marketplace.visualstudio.com/items?itemName=DynamicsCRMPG.MicrosoftDynamicsCRMSDKTemplates 下载的 CRM SDK 模板(添加到现有项目)中的 Xrm.Tooling.CrmConnectControl 和最新的 SDK SampleCode 中提供了一个名为 QuickStartXRMToolingWPFClient 的工具。在这两种情况下,我都没有成功登录到 MFA 环境。当然,我尝试登录的所有非 MFA 环境都可以使用上述两种解决方案按预期工作。

在插件注册工具 v.8.2.0.8411 中,当目标部署类型为 Office 365 时,可以通过将用户名和密码留空来登录启用 MFA 的环境。但是,当使用来自 Template/SDK 将用户名和密码留空会导致错误消息 "A user name is required." 或者 "A password is required."。

有谁知道是否可以使用 Xrm.Tooling.CrmConnectControl 以与在插件注册工具中相同的方式对 MFA 环境进行身份验证?

该解决方案适用于 Dynamics 365 的最新 SDK 中的示例代码。

首先我看到这个 QuickStartXRMToolingWPFClient 源代码使用了过时的 SDK - 转到 nuget 包管理器并将所有 Microsoft.CrmSdk 包更新到最新版本(不要更新 Microsoft.IdentityModel 自己 - 它将作为 SDK 程序集的依赖项更新到正确的版本)。

现在,在 CrmLogin.xaml.cs 中,您有一个函数 Window_Loaded 和 CrmConnectionManager 初始化如下:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    //some code
    mgr = new CrmConnectionManager();
    mgr.ParentControl = CrmLoginCtrl;
    mgr.UseUserLocalDirectoryForConfigStore = true;
    //some code
}

您必须添加以下行:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    //some code
    mgr = new CrmConnectionManager();
    mgr.ParentControl = CrmLoginCtrl;
    mgr.UseUserLocalDirectoryForConfigStore = true;
    mgr.ClientId = "2ad88395-b77d-4561-9441-d0e40824f9bc";
    mgr.RedirectUri = new Uri("app://5d3e90d6-aa8e-48a8-8f2c-58b45cc67315");
    //some code
}

重建后它将与 PluginRegistrationTool 完全一样工作