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