Аутентификация для веб-сервисов NAV с пользователем Windows через HTTP Базовая аутентификация - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть экземпляр NAV, который предоставляет (OData) веб-службы, а настроен на использование Windows в качестве типа учетных данных . Я могу успешно аутентифицироваться на этих веб-сервисах с NTLM . Однако я бы предпочел использовать базовую аутентификацию HTTP для аутентификации в службе. Я понимаю, что можно создать ключ доступа для аутентификации . Я понимаю, что если я установлю имя пользователя базовой аутентификации на User Name и пароль на Web Service Access Key с карты пользователя NAV, я смогу использовать обычную аутентификацию HTTP. Я сделал это успешно на других экземплярах NAV, которые настроены на использование типа учетных данных NavUserPassword. Однако это не работает для экземпляра с Windows типом учетных данных.

Более конкретно, если я запрашиваю защищенный ресурс из экземпляра NavUserPassword, я получаю 401 с заголовком WWW-Authenticate со значением Basic realm="". Если я сделаю то же самое с экземпляром Windows, я получу заголовок WWW-Authenticate со значением NTLM. Это говорит о том, что это не простой случай предоставления неправильного пароля, а более сложный случай, когда экземпляр NAV не настроен для принятия каких-либо ключей доступа к веб-службе.

Документация по Web Services Authentication, по-видимому, подразумевает, что для типа учетных данных Windows базовая аутентификация HTTP для веб-служб невозможна, но это не очень ясно, и я не уверен, что правильно разбирать документацию.

Кроме того, приведенная выше документация предполагает, что OAuth также может использоваться в качестве механизма аутентификации, но связанная документация находится за стеной портала PartnerSource. Если базовая аутентификация HTTP не подходит в моем случае, можно ли использовать OAuth?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я сам не пробовал, но, как сказано здесь

Все пользователи экземпляра Microsoft Dynamics NAV Server должны использовать тот же тип учетных данных. Вы указываете, какой тип учетных данных используется для конкретного экземпляра Microsoft Dynamics NAV Server в Средство администрирования сервера Microsoft Dynamics NAV.

Таким образом, вы не можете аутентифицировать пользователя с помощью NavPassword, если экземпляр настроен для ntlm. Но вы всегда можете установить и настроить отдельный экземпляр (= уровень обслуживания) для другого типа учетных данных.

Вы также можете запретить обычным пользователям RTC подключать этот экземпляр вообще и делать его выделенным для веб-служб.

Upd

Как я уже упоминал, уровень обслуживания совпадает с экземпляром Nav. Можно узнать, как создать новый экземпляр nav из Microsoft Docs . Разница между экземплярами будет в URL для доступа к ним. Различные экземпляры могут быть расположены как на отдельных серверах, так и на одном.

В терминах MS Windows Nav это сервис.

0 голосов
/ 10 сентября 2018

возможно, шаги

  1. Вам понадобится сервисный уровень с использованием NavUserPassword Auth (для этого вам понадобится сертификат)
  2. В NAV вам нужно создать нового пользователя и сгенерировать для него ключ веб-службы
  3. Используя имя пользователя и ключ, вы можете использовать Basic Auth

https://docs.microsoft.com/en-us/dynamics-nav/web-services-authentication

...