Показать сообщение отдельно
Старый 14.08.2012, 15:12   #1  
cherv is offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Регистрация: 24.05.2006
AX 2012: Авторизация при вызове сервисов
Добрый день, пытаюсь решить следующую проблему с авторизацией при вызове сервисов в AX 2012 (build 6.0.1108.670).
Из приложения на C# в Visual Studio вызываю любой Ax-овский сервис (сделал свой кастомный), например:

PHP код:
WX_CommonServiceClient com = new WX_CommonServiceClient();
string s com.getPhoneTypes(null); 
Если данное C#-приложение выполняется под пользователем, который обладает достаточными правами в AX, все проходит успешно, если же, например, пользователь в AX не заведен, происходит ошибка

Код:
System.ServiceModel.FaultException: Failed to logon to Microsoft Dynamics AX.
То есть, авторизация осуществляется по вызывающему сервис пользователю.

Решить проблему можно следующим образом (в мануалах по сервисам такого не нашел, опытным путем определилось) - добавить следующий код:
PHP код:
WX_CommonServiceClient com = new WX_CommonServiceClient();
com.ClientCredentials.Windows.ClientCredential.UserName "user";
com.ClientCredentials.Windows.ClientCredential.Domain "domain.ru";
com.ClientCredentials.Windows.ClientCredential.Password "pass";
string s com.getPhoneTypes(null); 
- тогда под любым пользователем вызов сервиса происходит корректно.

Но данный вариант не очень нравится - хранить в коде или в конфигурационном файле учетные данные о пользователе с довольно широкими правами в AX.

При этом в настройке сервиса (в конфигурационной утилите в Configure Services) для каждого сервиса можно указать учетные данные (UserPrincipalName - по умолчанию заполняется данными учетной записи, под которой зарущен AOS; либо ServicePrincipalName и т.д.), и потом эта настройка копируется в C#-приложении - создается app.config, включающий в том числе и эти строки
PHP код:
<identity>
<
userPrincipalName value="user@domain.ru" />
</
identity
Но это все не дает никакого эффекта - можно везде заполнить эти значения, либо просто стереть - результат не меняется.

Есть ли у кого каеи мысли на этот счет - это просто недоделка пока в AX 2012 (ведь если настройки по userprincipalname есть, значит, они должны использоваться), либо я что-то не так настраиваю?