Аутентификация WCF с использованием поставщика членства SQL

Надеюсь, вы, ребята, можете уточнить кое-что для меня. У меня есть веб-приложение, использующее Sql Membership Provider, и оно общается со вторым веб-приложением через службу WCF. Оба приложения имеют одно и то же хранилище данных Sql Membership Provider ... но мне нужен каждый вызов службы WCF для аутентификации пользователя.

Теперь я просмотрел множество примеров, но я чувствую, что примеры, которые я видел, либо пропускают определенный код, потому что он «должен» быть очевидным для меня, либо я неправильно понимаю, как WCF обрабатывает запрос (см. Ожидаемый код ниже).

Я благодарен за любую помощь ...

ЗДЕСЬ ЧТО Я УЖЕ ЗНАЮ, КАК ДЕЛАТЬ

Я знаю, как настроить членство в Sql на обоих концах.Я знаю, как настроить wsHttpBindingЯ знаю, как настроить сертификат служб, используемых в транспортной безопасности

ЗДЕСЬ, ЧТО Я ЗАМЕТИЛ

Как я могу передать пароль участника (... вы не можете)Передать ли файл cookie аутентификации? Если да, то как?Могу ли я создать «известное» имя пользователя и пароль, не связанные с самим пользователем?

В веб-клиенте я бы ожидал увидеть код, похожий на этот

protected void btnLogin_Click(object sender, EventArgs e)
{
    // Logging into the web-application is known and easy.
    if (Membership.ValidateUser("MyUserName", "MyPassword"))
    {
        FormsAuthentication.SetAuthCookie("MyUserName", true);
        FormsAuthentication.RedirectFromLoginPage("MyUserName", false);
    }
}

protected ServiceReference1.Contractor getContractor(Int32 key)
{
    // I expect something "like" this on the client call.
    MembershipUser user = Membership.GetUser("MyUserName");

    ServiceReference1.FishDataClient wcfService = new ServiceReference1.FishDataClient();

    // You can't retreive the users password directly,
    // nor can you get the hash from the SqlMembershipProvider.
    wcfService.ChannelFactory.Credentials.UserName.UserName = user.UserName;
    // So doing something like this would not be possible.
    wcfService.ChannelFactory.Credentials.UserName.Password = "??????";

    // So how is the web service going to authenticate the user from it's
    // references to the same SqlMembershipProvider (database).
    ServiceReference1.Contractor contractor = wcfService.GetContractor(key);

    wcfService.Close();
    wcfService = null;

    return contractor;
}

В СЛУЖБЕ WCF Я БУДУ ОЖИДАТЬ, ЧТОБЫ ВИДЕТЬ КОД, ЧТО-ТО, КАК ЭТО

[PrincipalPermission(SecurityAction.Demand, Role = "User")]
public Contractor GetContractor(Int32 key)
{
    ServiceSecurityContext context = ServiceSecurityContext.Current;
    Contractor contractor = new Contractor();

    // What goes here?  I would expect something like this...
    if (Membership.ValidateUser("???????", "???????"))
        contractor.Get(key);

    return contractor;
}

Ответы на вопрос(2)

Ваш ответ на вопрос