Невозможно подключиться к Dynamics 365(локально) с проверкой подлинности IFD
У меня есть одна среда Dynamics CRM 365(локальная) с проверкой подлинности IFD. Я пытаюсь выполнить операции на CRM с SDK. Сначала я делаю тестовое соединение и сохраняю это тестовое соединение в объекте кеша. Этот объект кэша имеет тип IDictionary
, Я борюсь со странной проблемой. Для разных экземпляров он будет создавать разные прокси и кэшировать их.
Сценарии:
1) Тип аутентификации - Федерация - он будет принимать этот действующий идентификатор и URL-адрес обнаружения и создавать его на ключе с использованием алгоритма MD5 и сохранять в IDictionary, поэтому в следующий раз, когда я выполню какую-либо операцию, он будет проверять прокси в кэше. Если кеш имеет значение true, он возьмет прокси из кеша и продолжит работу.
Это работает, как и ожидалось в dev, но в производстве у меня есть одна странная проблема. Предположим, что в первый день он устанавливает соединение, когда типом аутентификации является AD, и он работает только с этим типом соединения в течение всего дня, даже если я даю URL-адрес обнаружения для федерации.
В следующий раз, когда я попытаюсь предположить на второй день или если я закрою приложение и снова открою, на этот раз оно не работает для той же конфигурации.
Я слишком смущен тем, что происходит точно.
код для подключения:
private CrmServiceClient CreateServiceClient(AuthenticationProviderType _endpointType, IServiceManagement<IOrganizationService> organizationServiceManagement)
{
AuthCredentials = GetCredentials(_endpointType);
string connectionString = string.Empty;
string organizationUri = OrganizationServiceManagement.CurrentServiceEndpoint.Address.Uri.AbsoluteUri
.Replace(OrganizationServiceManagement.CurrentServiceEndpoint.Address.Uri.AbsolutePath, string.Empty);
switch (_endpointType)
{
case AuthenticationProviderType.None:
break;
case AuthenticationProviderType.ActiveDirectory:
connectionString = $"AuthType=AD;Url={ organizationUri }/{ AuthInfo.OrganizationUniqueName} ; Domain={ AuthInfo.Domain } ; Username={ AuthInfo.UserName }; Password ={ AuthInfo.Password }";
break;
case AuthenticationProviderType.Federation:
connectionString = $"AuthType=IFD;ServiceUri={ organizationUri }/{ AuthInfo.OrganizationUniqueName };Domain={ AuthInfo.Domain };Username={ AuthInfo.Domain }\\{ AuthInfo.UserName };Password={ AuthInfo.Password };";
break;
case AuthenticationProviderType.LiveId:
break;
case AuthenticationProviderType.OnlineFederation:
connectionString = $"AuthType=Office365;Username={AuthInfo.UserName}; Password={AuthInfo.Password}; Url={organizationUri}";
break;
default:
break;
}
var serviceClient = new CrmServiceClient(connectionString);
return serviceClient;
}