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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.09.2014, 11:05   #1  
Evgeny Erm is offline
Evgeny Erm
Участник
 
4 / 10 (1) +
Регистрация: 12.09.2014
Клиентское приложение - WCF сервис - Axapta
Помогите, если кто-нибудь сталкивался с подобным. Разрабатываю программный комплекс для дипломного проекта. В клиентском приложении пользователь должен ввести имя пользователя и пароль. WCF сервис должен, используя эти учетные данные, подключиться к аксапте посредством Business Connector, и получить справочник для этого пользователя. Вопрос в том, как ГРАМОТНО передать учетные данные пользователя WCF сервису?
Знаю, что в классе-посреднике, который генерирует Visual Studio при добавлении ссылки на WCF-службу есть свойство ClientCredentials. Можно сделать так:

Код:
using(SamplesClient proxy = new SamplesClient())
{
      proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("UserName", "UserPass");
      string response = proxy.SomeMethod();
 }
А как сделать, чтобы сервис воспользовался этими учетными данными при подключении к аксапте в SomeMethod? Или это делается как-то по другому?

Пока делаю так, но думаю что это не очень правильно:

Код:
using(SamplesClient proxy = new SamplesClient())
{
      string response = proxy.SomeMethod("UserName", "UserPass");
 }
На сервисе:
Код:
public string SomeMethod(UserName, Pass)
{
    NetworkCredential nc = new NetworkCredential(UserName, Pass);

     using (Axapta ax = new Axapta())
     {
          ax.LogonAs(UserName", "", nc, "", "", "", ConfigurationManager.AppSettings.Get("BC_CONFIG"));

    .....
    .....
      }
}
Старый 12.09.2014, 13:24   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Walkthrough: Exchanging documents by using the NetTcp adapter [AX 2012]
__________________
-ТСЯ или -ТЬСЯ ?
Старый 12.09.2014, 15:11   #3  
Evgeny Erm is offline
Evgeny Erm
Участник
 
4 / 10 (1) +
Регистрация: 12.09.2014
Vadik, спасибо за ссылку, но думаю это не совсем то что мне надо.
WCF сервис должен будет не только запрашивать справочники из аксапты, но и вызывать статические методы, для выполнения некоторой бизнес-логики. Я сильно упростил описание программы, чтобы выделить главную суть проблемы. Клиентское приложение будет взаимодействовать с сервисом на основе привязки wsHttpBinding. Можно ли настроить аутентификацию пользователя средствами WCF?
Старый 12.09.2014, 21:08   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
А что в это варианте смущает ?

Цитата:
Пока делаю так, но думаю что это не очень правильно:

X++:
using(SamplesClient proxy = new SamplesClient())
{
      string response = proxy.SomeMethod("UserName", "UserPass");
 }
В качестве транспорта можно использовать в https, если боитесь перехвата пароля. Это будет даже надежнее, чем даже на этом форуме
Старый 13.09.2014, 06:26   #5  
Evgeny Erm is offline
Evgeny Erm
Участник
 
4 / 10 (1) +
Регистрация: 12.09.2014
Спасибо, Андре, за ответ. Смущает еще то, что таких методов как SomeMethod у сервиса много, и тогда каждому придется передавать учетные данные пользователя. Вот я и думаю, возможно существует способ один раз передать учетные данные пользователя при создании посредника, вроде этого:

X++:
using(SamplesClient proxy = new SamplesClient())
{
      proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("UserName", "UserPass");
      string response = proxy.SomeMethod();
      string response2 = proxy.OtherMethod();
      .........................
      .........................
}
Зачем-то же есть в WCF proxy свойство ClientCredentials? Вот как только им правильно воспользоваться...
Старый 13.09.2014, 07:10   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Ну, в общем случае - http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx
Обратите внимание, что у вас и сервис должен быть сконфигурирован соответствующим образом.

И у меня только нет уверенности, что этот Credentials потом еще Business Connector- у подойдет. Если будет положительный вариант, напишите, пожалуйста.
Старый 15.09.2014, 13:13   #7  
Maximin is offline
Maximin
NavAx
NavAx Club
 
412 / 346 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Попробуйте почитать вот эту тему с моим участием: AX 2012: Авторизация при вызове сервисов
Там человек тоже пытался разобраться в всем этом.
Я ему старался помочь, чем мог.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Старый 16.09.2014, 21:31   #8  
Evgeny Erm is offline
Evgeny Erm
Участник
 
4 / 10 (1) +
Регистрация: 12.09.2014
Цитата:
Сообщение от Maximin Посмотреть сообщение
Попробуйте почитать вот эту тему с моим участием: AX 2012: Авторизация при вызове сервисов
Там человек тоже пытался разобраться в всем этом.
Я ему старался помочь, чем мог.
Спасибо, посмотрю.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
WCF и Axapta Ali311 DAX: Программирование 7 25.04.2014 07:28
Axapta - Обнаружена ошибка.Приложение будет закрыто. CasperSKY DAX: Программирование 19 30.07.2009 13:44
Dynamics AX: WCF: The Enterprise Service Bus for Dynamics AX and the rest of the Microsoft Stack Blog bot DAX Blogs 0 10.03.2009 16:05
Axapta не видит сервис Oracle Ozzi DAX: Администрирование 4 13.09.2004 13:27
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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