AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.02.2015, 21:40   #1  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Доброго времени суток, комрады!
А подскажите пожалуйста, что за хитрая авторизация у стандартных НАВовских вебсервисов?
Я собственно вот с какой проблемой столкнулся: есть у меня 2 клиента цепляющихя к НАВовскому вебсервису, один под Винду, другой под Андроид. Код работы с вебсервисом в обоих один в один одинаковый, UseDefaultCredentials у обоих false, логин с паролем передаются через свойство вебсервиса Credentials, передаются один в один одинаково. Но! Клиент под Винду работает, а под Андроид говорит ошибка http 401: Unauthorized
Я по началу думал что что-то не так делаю в Андроид приложении, но потом собрал на коленке свой вебсервис и моё Андроид приложение прекрасно с ним работает! Собственно отсюда и вопрос, что не так с НАВовским вебсервисом в плане авторизации?
Старый 09.02.2015, 13:19   #2  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
тут важно, чтобы все апдейты к NAV были установлены.
Потому что, вебсервисы крайне бажная штука, в первой реализации.
Например, можно почитать баги у vjeko - там на второй странице (ибо это баги описанные в 2012 году):
http://vjeko.com/tags/web-services

в конце концов, если почитать обновления микрософта к наву:

KB 2667345 Web Service is NOT user language depending starting in build 32258
KB 2510959 "Web Service gives error Soap message is invalid!"
KB 2991641 Microsoft Dynamics NAV 2009 web services leak memory
и т.д., в том числе я где-то читал о проблеме подключения к наву.

в общем, последний билд 2009 NAV R2 - 38655.
так что его бы потестировать - если не подключается - то регистрировать баг в microsoft)
Старый 09.02.2015, 13:37   #3  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
и да, windows клиент подключается с этой же машины, или с другой, по сети?
проверь, работает ли клиент , подключающийся действительно из сети (а не с машины)
Старый 09.02.2015, 17:58   #4  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от Kashin Посмотреть сообщение
и да, windows клиент подключается с этой же машины, или с другой, по сети?
проверь, работает ли клиент , подключающийся действительно из сети (а не с машины)
То что Вин клиент подключается по сети с другой машины, это первое что я проверил.
Насколько я знаю, у меня вроде последний билд и стоит, хотя это надо проверить.
Я тут строил предположения и гуглил их, пока перспективным кажется предположение о том что во всём виноват Cerberos, вроде как НАВ через него аутентифицируется, а так же в сети множество жалоб на то, что у Андроида не всё хорошо с Cerberos. Я например, не могут даже в браузере достучаться до вебсервиса, что как бы исключает проблемы с моей криворукостью в написании приложения под Андроид, т.е. проблема глубже чем хотелось бы.
В общем, надо ещё исследовать и тестировать... Надо ещё под NAV 2013 и NAV 2015 попробовать, я пока только на 2009 пробовал.
Старый 09.02.2015, 21:52   #5  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Не уверен, как вы передаете Credentials через свойства веб-сервиса. Есть 2 пути...

1. Неправильный (как вы, возможно, и делаете):
User (System.Net.NetworkCredential). Определить - User.UserName, User.Password.
NAVService.Credentials = User

2. Правильный, с использованием CredentialCache:
Пример приведен здесь

WebServicesUseNTLMAuthentication в CustomerSettings должно быть true.
Старый 09.02.2015, 23:35   #6  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от Orwell Посмотреть сообщение
Не уверен, как вы передаете Credentials через свойства веб-сервиса. Есть 2 пути...

1. Неправильный (как вы, возможно, и делаете):
User (System.Net.NetworkCredential). Определить - User.UserName, User.Password.
NAVService.Credentials = User

2. Правильный, с использованием CredentialCache:
Пример приведен здесь

WebServicesUseNTLMAuthentication в CustomerSettings должно быть true.
Есть ещё третий правильный путь, с использованием NetworkCredential, пример там же, просто выкидываем из него кэш.
CredentialCache в данном случае - лишнее звено.
Но это так, полемика, главное же, что установка WebServicesUseNTLMAuthentication в true, помогла, хоть и со второго раза (после первого рестарта сервиса почему-то не взлетело, а вот уже после второго - полёт нормальный). Чуяло моё сердце, что что-то с типом аутентификации не так. Смущало сильно что под Виндой всё ОК.
В любом случае, спасибо тебе огромное добрый человек! Будет теперь у меня мобильный НАВик
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:38.