Аутентификация к Динамике 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.