У меня следующая ситуация (наброски):
Авторизация Webservice
Эта служба вызывается и проверяет (путем выполнения заданной бизнес-логики), является ли пользователь действительным или нет.
Custom Business Webservice
Это некоторый веб-сервис, созданный для бизнес-приложения, который внутренне вызывает «Web-сервис авторизации» для проверки учетной записи, которая вызвала бизнес-веб-сервис.
Я реализовал эту логику, используя авторизацию службы WCF в моем "Custom Business Webservice". В основном я настроил
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="MyCompany.Authorization.WCF.AuthorizationPolicy, MyCompany.AuthorizationDll"/>
</authorizationPolicies>
</serviceAuthorization>
AuthorizationPolicy
внутренне вызывает «Web-сервис авторизации».
Проблема
Проблема в том, что мне нужно выдать себя за абонента моего "Custom Business Webservice". Идентификатор клиента является правильным, однако WindowsIdentity - это идентификатор пользователя пула приложений.
Обратите внимание, что олицетворение работает внутри самой службы, если я использую [OperationBehavior(Impersonation = ImpersonationOption.Required)]
, но , оно не в методе AuthorizationPolicy Evaluate(...)
.
(я использую безопасность на транспортном уровне, очевидно, используя учетные данные для проверки подлинности Windows)
У кого-нибудь есть какие-либо подсказки о том, как я могу выдать себя за вызывающего абонента до входа в метод IAuthorizationPolicy.Evaluate(...)
??