Попытка аутентификации в MS Dynamics CRM 2016 WebApi с использованием R - PullRequest
1 голос
/ 28 сентября 2019

Я мог бы использовать некоторую помощь ..

Я пытаюсь подключиться к локальной базе данных MS Dynamics CRM (2016).он обращен к Интернету (IFD) и использует adfs 3.0 для аутентификации пользователей.

Теперь, когда я пытаюсь подключиться к API с помощью веб-браузера, появляется небольшая форма входа, которая позволяет мне ввести свое имя пользователя ипароль.Когда я отправляю эти учетные данные, браузер открывает страницу с хорошим кодом json, однако, когда я пробую следующий код в R

library(httr)

result <- GET(
   "https://xrm.company.nl/Company/api/data/v8.2/some=query",
   config = authenticate(
      user = "MyUsername",
      password = "MyPassword",
      type = "ntlm"
   )
)

, я получаю текстовое / html-содержимое, которое создает форму POST.Эта форма уже заполнена для меня, но для автоматической отправки используется скрипт js.В html также имеется предупреждающее сообщение о том, что скрипт отключен в сочетании с удобной (но недоступной) кнопкой отправки.

Когда я извлекаю html из содержимого content(result, as = "text"), поместите его в html-файл и откройте его в моем браузере, результаты json вырастут.

Но я не знаю, как включить скрипт или как нажать кнопку отправки с использованием R.

Кто-нибудь есть идеи для обхода этих проблем, или о том, как правильно проходить аутентификацию в adfs с использованием R?

1 Ответ

0 голосов
/ 30 сентября 2019

Вы будете запрашивать токен доступа на предъявителя SAML.См. Этот пост в блоге Magnatism: Динамическая аутентификация ADFS в динамике 365 с использованием учетных данных пользователя

В скорлупе с орехами необходимо выполнить следующее ...

  1. Получить пользовательскую область, отправив HTTP-запрос GET в конечную точку пользовательской области
  2. Получить SAML-токен доступа, отправив HTTP-запрос POST в конечную точку службы ADFS
  3. Извлечь содержимое XML между элементами, удалить все отступы и затем кодировать вСтрока Base 64
  4. Получение токена доступа на предъявителя SAML путем отправки HTTP-запроса POST на конечную точку токена
  5. Установка заголовка авторизации HTTP-запроса
...