08.02.2015, 21:40 | #1 |
Участник
|
Доброго времени суток, комрады!
А подскажите пожалуйста, что за хитрая авторизация у стандартных НАВовских вебсервисов? Я собственно вот с какой проблемой столкнулся: есть у меня 2 клиента цепляющихя к НАВовскому вебсервису, один под Винду, другой под Андроид. Код работы с вебсервисом в обоих один в один одинаковый, UseDefaultCredentials у обоих false, логин с паролем передаются через свойство вебсервиса Credentials, передаются один в один одинаково. Но! Клиент под Винду работает, а под Андроид говорит ошибка http 401: Unauthorized Я по началу думал что что-то не так делаю в Андроид приложении, но потом собрал на коленке свой вебсервис и моё Андроид приложение прекрасно с ним работает! Собственно отсюда и вопрос, что не так с НАВовским вебсервисом в плане авторизации? |
|
09.02.2015, 13:19 | #2 |
Участник
|
тут важно, чтобы все апдейты к 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 |
Участник
|
и да, windows клиент подключается с этой же машины, или с другой, по сети?
проверь, работает ли клиент , подключающийся действительно из сети (а не с машины) |
|
09.02.2015, 17:58 | #4 |
Участник
|
Цитата:
Насколько я знаю, у меня вроде последний билд и стоит, хотя это надо проверить. Я тут строил предположения и гуглил их, пока перспективным кажется предположение о том что во всём виноват Cerberos, вроде как НАВ через него аутентифицируется, а так же в сети множество жалоб на то, что у Андроида не всё хорошо с Cerberos. Я например, не могут даже в браузере достучаться до вебсервиса, что как бы исключает проблемы с моей криворукостью в написании приложения под Андроид, т.е. проблема глубже чем хотелось бы. В общем, надо ещё исследовать и тестировать... Надо ещё под NAV 2013 и NAV 2015 попробовать, я пока только на 2009 пробовал. |
|
09.02.2015, 21:52 | #5 |
Участник
|
Не уверен, как вы передаете 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 |
Участник
|
Цитата:
Сообщение от Orwell
Не уверен, как вы передаете Credentials через свойства веб-сервиса. Есть 2 пути...
1. Неправильный (как вы, возможно, и делаете): User (System.Net.NetworkCredential). Определить - User.UserName, User.Password. NAVService.Credentials = User 2. Правильный, с использованием CredentialCache: Пример приведен здесь WebServicesUseNTLMAuthentication в CustomerSettings должно быть true. CredentialCache в данном случае - лишнее звено. Но это так, полемика, главное же, что установка WebServicesUseNTLMAuthentication в true, помогла, хоть и со второго раза (после первого рестарта сервиса почему-то не взлетело, а вот уже после второго - полёт нормальный). Чуяло моё сердце, что что-то с типом аутентификации не так. Смущало сильно что под Виндой всё ОК. В любом случае, спасибо тебе огромное добрый человек! Будет теперь у меня мобильный НАВик |
|