Для упрощения вызова веб-сервисов D365O, которые всегда требуют аутентификации, Microsoft написал два класса, открытый код которых выложен по ссылке https://github.com/microsoft/Dynamics-AX-Integration/tree/master/ServiceSamples/AuthenticationUtility.
Рекомендуется создать проект, который будет содержать эти классы, и использовать ссылку на него в собственных проектах, где необходимо подключение к D365O через одинаковое приложение Azure. К этому проекту нужно добавить ссылку на пакет Microsoft.IdentityModel.Clients.ActiveDirectory, как описано в статье «Добавление пакета Microsoft.IdentityModel.Clients.ActiveDirectory».
Первый из классов представляет собой авторизационную информацию. Эта информация должна быть правильно прописана для работы веб-сервиса. Выглядит этот класс следующим образом:
Жирным шрифтом в коде выделены поля, значения которых нужно подставить самому.
Namespace выбираем такой же как и у остального проекта, к которому добавляется данный класс.
Значениями UriString и ActiveDirectoryResource – должен быть URL адрес D365O. URL адрес в переменной ActiveDirectoryResource не должен содержать / в конце.
UserName и Password – это, соответственно, логин и пароль корпоративной учетной записи, имеющей доступ к указанной D365O и указанному далее приложению Azure.
ActiveDirectoryTenant – это адрес URL, по которому происходит авторизация пользователя. Можно написать адрес входа для конкретной компании, а можно оставить как в примере (общий для всех компаний адрес).
ActiveDirectoryClientAppId – Application ID приложения Azure, имеющее доступ к необходимым ресурсам D365O для работы веб-сервиса.
ActiveDirectoryClientAppSecret – ключ приложения Azure, по которому можно подключиться к нему без ввода логина и пароля пользователя. В данном руководстве не рассмотрен.
Второй класс от Microsoft отвечает за логику авторизации на основе введенных в предыдущем классе авторизационных данных. Выглядит он следующим образом:
В коде жирным шрифтом выделена строка namespace. Нужно прописать там namespace, используемый в нашем проекте. В остальном класс остается таким же. Он содержит в себе название токена авторизации (статически прописанное значение “Authorization”), а также метод для получения значения этого токена. В дальнейшем этот токен будет использован при установке соединения с D365O.