Здравствуйте, Михаил Романов, Вы писали:
МР>Честно говоря, если нет каких-то серьезных оснований для иного я бы предложил вам остановиться на первом варианте. Т.е. работать по следующей схеме:
МР>
МР>Во всех протоколах перейти на <security mode="Message"> и <message clientCredentialType="UserName"> (увы, не поддерживается в Named Pipes)
МР>Аутентификацию на всех сервисах проводить используя тот самый UserNamePasswordValidator, только проверять он будет не токен, а непосредственно сами пользователя и пароль
МР>
Это придётся в клиенте постоянно хранить в памяти пароль, который ввёл юзер. Для случая с ASP.NET неудобно.
<security mode="Message"> и <message clientCredentialType="UserName"> — не запустилось с netHttpBinding. Предлагает использовать TransportWithMessageCredential, что в свою очередь требует SSL...
МР>Вторая схема (с выдачей security token) полезна в случае, если вы выделяете один authentication server, который обслуживает множество прикладных сервисов. Это особенно полезно когда:
МР>
МР>Сервисы разрабатываются разными организациями (и не у каждой есть доступ с credentials пользователей)
МР>Схемы разрабатываются разными группами — тогда они становятся менее зависимыми от инфраструктуры (менее связанные).
МР>
Отдельный Identity-сервер тоже не охота городить. Тем более что
МР>Но! Этот вариант только для HTTP транспорта.
P_K>>1. использовать хидеры запроса (http или soap): в них для каждого обращение к сервису клиентское приложение кладёт token/ticket/coockie, на серверной стороне используется свой ServiceAuthorizationManager.
МР>Вообще-то довольно распространенный вариант.
МР>Почему у вас не создается нормальный ServiceSecurityContext — не могу сказать. На сколько я помню, можно указать что вы будете создавать полностью свой IPrincipal и формировать его как вам заблагороссудится. А уже ServiceSecurityContext должен подхватывать его.
Да вот как-то не разобрался как создавать полностью свой IPrincipal и подсовывать его в ServiceSecurityContext. Спасибо за наводку, надо покопать ещё в этом направлении. Если есть ссылки по теме — буду благодарен.
В целом, спасибо за ответ, есть над чём подумать!