Я пытаюсь получить доступ к API-интерфейсам API OData Dynamics 2016 из консольного приложения.401 при доступе к веб-API Dynamics CRM 2016
Мы Dynamics CRM 2016 установлен, настроен претензий на основе аутентификации, и с помощью AD FS v3.0.
Я понимаю, что консольное приложение (или веб-приложение) должно иметь возможность доступа к веб-интерфейсам с помощью встроенной проверки подлинности Windows (то есть NTML или Kerberos) без какой-либо специальной обработки ... или, возможно, поток OAuth должен работать, когда он включен ,
Для обычного пользователя обращающегося Dynamics «страницы», аутентификация работает отлично (перенаправление в журнал AD FS в странице), но доступ к OData API, как представляется, не работает (например: https://crm.domain.org/api/discovery/v8.0/):
- в браузере я получаю приглашение для входа в Windows, и вводить действительные учетные данные всегда привожу к HTTP 401 несанкционированных ошибок
- в Брауэре, если перейти к Web API URL после того входом в системе на страницах, то я могу доступ к веб-API (т. е. некоторые файлы cookie должны быть установлены, и я уже неявно разрешен)
- из кода, используя HttpClient с конкретными правильными учетными записями (или текущими учетными данными), я также получаю 401
Вещей, которые я попробовал:
- если я отключить проверку подлинности на основе утверждений полностью , HttpClient отлично работает, и я могу получить доступ к API OData
, если я оставлю аутентификацию на основе утверждений, и активирует OAuth через PowerShell
Add-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;
.Проверка подлинности с помощью Windows по-прежнему не работает, но теперь возможно использование аутентификации на предъявителя. Я могу использовать this snippet для получения OAuth конечной точки для маркеров поколения, и использовать
AuthenticationContext.AcquireTokenAsync
выдать маркер, а затем передать его вAuthorization
HTTP Header ... но, несмотря ни на что, я получаю эту ошибку:Bearer error=invalid_token, error_description =Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, resource_id=https://crm.domain.org/
Я что-то упустил? возможно, проблема конфигурации?
Я также разместил вопрос на форумах сообщества Dynamics CRM, на всякий случай https://community.dynamics.com/crm/f/117/t/201151 – tsimbalar
, удалось ли вам это решить? –
мы просто отказались от этого пути и закончили использование «на пути к устареванию» Dynamics SDK вместо «рекомендованных» веб-интерфейсов ... – tsimbalar