Integrated security в распределенных приложениях WCF/Silverlight
От: Visor2004  
Дата: 30.09.13 08:17
Оценка:
Всем привет. Есть задача сделать Integrated mode security в приложении, которое сосит из клиентской части на Silverlight и набора сервисом, общение с которыми реализовано через WCF сервис, расположенный на хосте, где хостится Silverlight пакет. Binding указанный ниже прекрасно справляется с задачей, когда у нас есть цепочка вызовов вида: silverlight->host->internal service1, правда для того, чтобы на internal service1 видеть корректный identity, приходится делать на хосте дополнительную имперсонацию с помощью вызова ServiceSecurityContext.Current.WindowsIdentity.Impersonate(). Проблемы начинаются, когда нужно выполнить цепочку вызовов длиннее, например, silverlight->host->internal service1->internal service2. В таком случае в ServiceSecurityContext на хосте internal service2 всегда приходит indentity пользователя под которым запущен процесс, хостящий internal service1, не смотря на все имперсонации. Вопрос, что делать, чтобы в контексте internal service2 была identity пользователя, который залогинен на стороне silverlight? Все сервисы хостятся под IIS на разных машинах в одном домене.

 <basicHttpBinding>
                <binding name="TestHostServiceBinding">
                    <security mode="TransportCredentialOnly">
                        <transport clientCredentialType="Ntlm" />
                    </security>
                </binding>
 </basicHttpBinding>
Помните!!! ваш говнокод кому-то предстоит разгребать.
wcf silverlight security
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.