12.09.2014, 11:05 | #1 |
Участник
|
Клиентское приложение - 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(); } Пока делаю так, но думаю что это не очень правильно: Код: 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 |
Модератор
|
__________________
-ТСЯ или -ТЬСЯ ? |
|
12.09.2014, 15:11 | #3 |
Участник
|
Vadik, спасибо за ссылку, но думаю это не совсем то что мне надо.
WCF сервис должен будет не только запрашивать справочники из аксапты, но и вызывать статические методы, для выполнения некоторой бизнес-логики. Я сильно упростил описание программы, чтобы выделить главную суть проблемы. Клиентское приложение будет взаимодействовать с сервисом на основе привязки wsHttpBinding. Можно ли настроить аутентификацию пользователя средствами WCF? |
|
12.09.2014, 21:08 | #4 |
Moderator
|
А что в это варианте смущает ?
Цитата:
Пока делаю так, но думаю что это не очень правильно:
X++: using(SamplesClient proxy = new SamplesClient()) { string response = proxy.SomeMethod("UserName", "UserPass"); } |
|
13.09.2014, 06:26 | #5 |
Участник
|
Спасибо, Андре, за ответ. Смущает еще то, что таких методов как 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(); ......................... ......................... } |
|
13.09.2014, 07:10 | #6 |
Moderator
|
Ну, в общем случае - http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx
Обратите внимание, что у вас и сервис должен быть сконфигурирован соответствующим образом. И у меня только нет уверенности, что этот Credentials потом еще Business Connector- у подойдет. Если будет положительный вариант, напишите, пожалуйста. |
|
15.09.2014, 13:13 | #7 |
NavAx
|
Попробуйте почитать вот эту тему с моим участием: AX 2012: Авторизация при вызове сервисов
Там человек тоже пытался разобраться в всем этом. Я ему старался помочь, чем мог.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
16.09.2014, 21:31 | #8 |
Участник
|
Цитата:
Сообщение от Maximin
Попробуйте почитать вот эту тему с моим участием: AX 2012: Авторизация при вызове сервисов
Там человек тоже пытался разобраться в всем этом. Я ему старался помочь, чем мог. |
|