|
|
|
|
#1 |
|
NavAx
|
UserPrincipalName и ServicePrincipalName - это уже для того, чтобы клиентское приложение могло удостовериться, что оно общается не с "левым" сервисом а именно тем, который был в конкретном WSDL. И чтобы Kerberos смог понять, что какая-то служба на конкретном порту/хосте ассоциируется с своим конкретным пользователем. Это почти не имеет отношения к авторизации клиента. Клиент просто должен указать в userPrincipalName такой же SPN, какой установлен у службы.
См. http://blogs.iis.net/brian-murphy-bo...palname-s.aspx http://www.osp.ru/win2000/2007/04/4315478/ А что касается вашей идеи о едином пользователе "трое из сервиса, одинаковы с лица", то это нужно делать несколько по-другому, в Аксе несколько другая концепция относительно того, чего вы хотите. Все направлено на сохранение identity пользователя, запустившего клиентское приложение. В общем-то, для того и настраивается delegation чтобы эта вот identity сохранилась на всем пути: Хост с клиентом -> WCF компонента (IIS) -> AOS. Соответственно, если вы хотите чтобы все пользователи под кем бы не подсоединялись к Аксовскому сервису, выглядели одним и тем же - то настройте в Аксе trusted delegation user, заведите в домене бесправную запись с заранее известным паролем (по типу .NET Proxy user), заведите его в Аксе и поставьте в соответствие этому trusted delegation user наряду с остальными пользвателями. Залейте в app.config клиента его имя/пароль, и пусть клиенты всегда соединяются с этим логином/паролем который вы в runtime будете присваивать Windows.ClientCredential. Вообще говоря, если кроме этого псевдопользователя никто со своими учетными данными к сервису ходить не будет, тогда можно и без trusted delegation - напрямую завести нашего бесправного пользователя в Аксе. Но фактически, это почти равносильно отсутствию пароля вовсе, т.к. пароль все равно доступен кому-то извне, пусть и зашитым в приложение-клиент. Кстати, если у вас появятся мысли о доступе вообще без пароля - имейте в виду, что Dynamics AX позволяет доступ без авторизации только к конечной точке по умолчанию. Для всех остальных точек нужно иметь другой тип привязки, чтобы иметь возможность указать конечную точку, а в любом из этих типов нужно указывать credentials. ![]() P.S. Кстати, попробуйте перед своим com.ClientCredentials.Windows.ClientCredential.UserName = ... поставить вывод текущего UserName и посмотрите что там лежит. Просто ради интереса.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Последний раз редактировалось Maximin; 15.08.2012 в 18:22. |
|
|
|
|
#2 |
|
MCTS
|
Общую идею понял, спасибо за ссылки и подробный ответ, буду дальше изучать.
Цитата:
P.S. Кстати, попробуйте перед своим com.ClientCredentials.Windows.ClientCredential.UserName = ... поставить вывод текущего UserName и посмотрите что там лежит. Просто ради интереса.
.
|
|
|
| Теги |
| .net, aif, ax2009, ax2012, service, web сервис, webservice |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|