Аутентификация для веб-служб NAV с пользователем Windows через базовую аутентификацию HTTP

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

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

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

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


person Jacob Horbulyk    schedule 10.09.2018    source источник


Ответы (2)


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

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

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

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

Upd

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

В терминах MS Windows экземпляр Nav - это сервис.

person Mak Sim    schedule 10.09.2018
comment
Я предполагаю, что идея в этом ответе, которая, как мне кажется, не поддерживается полностью, заключается в том, что NavPassword является синонимом использования токена доступа к веб-службе, поскольку можно создать токен доступа к веб-службе для пользователя Windows. При этом я думаю, что окончательный ответ на мой вопрос зависит от уровней услуг, и тот, кто предоставит ответ, объясняющий, что такое уровень услуг и как его можно добавить вместе с существующим уровнем услуг, скорее всего, получит свой ответ как правильный. - person Jacob Horbulyk; 11.09.2018

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

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

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

person azatoth    schedule 10.09.2018
comment
Не могли бы вы подробнее рассказать об уровне обслуживания? Мне кажется, что эта часть отсутствует, и предоставленная вами ссылка не раскрывает эту концепцию. - person Jacob Horbulyk; 10.09.2018
comment
Имейте в виду, что служба OData уже существует, и к ней можно получить доступ через NTLM, поэтому создается впечатление, что уровень обслуживания уже существует. - person Jacob Horbulyk; 10.09.2018
comment
Привет, вам нужно добавить второй экземпляр уровня услуг, который использует другой метод аутентификации - person azatoth; 16.10.2018