Аутентификация к Динамике 365 На предпосылке

Я пытаюсь подключиться к Dynamics 365 On-Premise с клиентом OData для.net

Я пытался пройти проверку подлинности с помощью обычной проверки подлинности, однако это не работает.

var c = new Microsoft.Dynamics.CRM.System(new Uri("https://mycrm01/crm/api/data/v8.2/"));

c.SendingRequest2 += (o, requestEventArgs) => {
     var creds = username + ":" + password;
     var encodedCreds = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds));
     requestEventArgs.RequestMessage.SetHeader("Authentication", "Basic" + encodedCreds);
};

var contacts = c.Contacts.Where(x => x.Firstname=="testuser");
foreach (var contact in contacts)
{

}

Я получаю сообщение об ошибке: Ошибка HTTP 401 - неавторизовано: доступ запрещен

Может кто-нибудь помочь мне, как это сделать?

1 ответ

В общем, я использую только клиент OData из JavaScript. При использовании.NET я использую библиотеки SDK, которые обеспечивают аутентификацию и доступ через класс CrmServiceClient.

Чтобы использовать клиент OData из C#, в этой статье описываются различные методы аутентификации: https://msdn.microsoft.com/en-us/library/mt595798.aspx

Шаблоны аутентификации веб-API

Существует три различных способа управления аутентификацией при использовании веб-API. С JavaScript в веб-ресурсах

Когда вы используете веб-API с JavaScript в веб-ресурсах HTML, сценариях форм или командах ленты, вам не нужно включать какой-либо код для аутентификации. В каждом из этих случаев пользователь уже аутентифицирован приложением, а аутентификация управляется приложением. С локальными развертываниями

При использовании веб-API для локальных развертываний необходимо указать сетевые учетные данные пользователя. В следующем примере показана функция C#, которая возвращает HttpClient, настроенный для сетевых учетных данных данного пользователя: C#

private HttpClient getNewHttpClient(string userName,string
password,string domainName, string webAPIBaseAddress) {
HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential(userName, password, domainName)
 });
 client.BaseAddress = new Uri(webAPIBaseAddress);
 client.Timeout = new TimeSpan(0, 2, 0);
return client; 
}   

С Microsoft Dynamics 365 (онлайн) или с подключением к Интернету

При использовании веб-API для Dynamics 365 (онлайн) или локального развертывания с выходом в Интернет (IFD) необходимо использовать OAuth, как описано в разделе Подключение к веб-службам Microsoft Dynamics 365 с помощью OAuth.

Если вы создаете одностраничное приложение (SPA) с использованием JavaScript, вы можете использовать библиотеку adal.js, как описано в разделе Использование OAuth с перекрестным общим доступом к ресурсам, чтобы подключить одностраничное приложение к Microsoft Dynamics 365.

Другие вопросы по тегам