Использование многофакторной аутентификации с Xrm.Tooling.CrmConnectControl

Я попытался войти в среду 365 Online с поддержкой многофакторной аутентификации (MFA), используя Xrm.Tooling.CrmConnectControl из шаблона CRM SDK (добавленного в существующий проект), который можно загрузить по адресу https://marketplace.visualstudio..com/items?itemName=DynamicsCRMPG.MicrosoftDynamicsCRMSDKTemplates, а также код QuickStartXRMToolingWPFClient, предоставленный в последней версии SDK SampleCode. . В любом случае мне не удалось войти в среду MFA. Конечно, все среды без MFA, в которые я пытался войти, работают, как и предполагалось, с использованием обоих описанных решений.

В средстве регистрации подключаемых модулей v.8.2.0.8411 можно войти в среду с поддержкой MFA, оставив поля «Имя пользователя» и «Пароль» пустыми при настройке типа развертывания Office 365. Однако при использовании CrmConnectControl из шаблона/SDK оставить имя пользователя и пароль пустой приводит к сообщению об ошибке «Требуется имя пользователя». или «Требуется пароль».

Кто-нибудь знает, есть ли способ использовать Xrm.Tooling.CrmConnectControl для аутентификации в среде MFA так же, как это делается в инструменте регистрации плагинов?


person Filip Sannerud    schedule 21.07.2017    source источник
comment
Спасибо, что включили это, это только что решило мою проблему. В инструменте регистрации подключаемых модулей версии 8.2.0.8411 можно войти в среду с поддержкой MFA, оставив поля «Имя пользователя» и «Пароль» пустыми при выборе типа развертывания Office 365.   -  person Chris Snyder    schedule 06.11.2018


Ответы (1)


Решение для SampleCode из последнего пакета SDK для Dynamics 365.

Прежде всего, я вижу, что этот 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

person Pawel Gradecki    schedule 21.07.2017
comment
Потрясающе, работает как шарм. Спасибо за помощь! - person Filip Sannerud; 24.07.2017