Поскольку вы уже используете MembershipProvider, вы можете использовать его и в wcf, чтобы оба были защищены одним и тем же механизмом.
См. post в msdn.
Разработчики Windows Communication Foundation (WCF) могут использовать эти функции в целях безопасности.При интеграции в приложение WCF пользователи должны предоставить комбинацию имени пользователя и пароля клиентскому приложению WCF.Чтобы передать данные в службу WCF, используйте привязку, которая поддерживает учетные данные имени пользователя и пароля, например WSHttpBinding (в конфигурации, элемент wsHttpBinding), и установите тип учетных данных клиента равным UserName.В службе безопасности WCF аутентифицирует пользователя на основе имени пользователя и пароля, а также назначает роль, указанную ролью ASP.NET.
Другим вариантом может быть создание пользовательского IAuthorizationPolicy
который тянет вашего пользователя через
OperationContext.Current.IncomingMessageHeaders.GetHeader<T>
И затем настройте вашего принципала следующим образом:
evaluationContext.Properties[Constants.EvaluationContextPrincipal] = principal;
Вот еще немного информации о создании пользовательского IAuthroizationPolicy .С помощью этого метода вы можете достичь того, что вы хотите, не передавая своего пользователя в метод.
Просто предупреждаем если вы пойдете по этому пути, хитрый человек может в итоге выдать себя за пользователя, просто добавив в заголовок поддельного пользователя.
Использование поставщика членства asp.net для wcf, скорее всего, даст вам то, что вы есть на самом деле после того, как вы добавите немного безопасности.