Autenticação WCF usando o provedor de associação SQL

Espero que vocês possam esclarecer um pouco disso para mim. Eu tenho um aplicativo Web usando o Provedor de Associação Sql e ele fala com um segundo aplicativo Web através de um Serviço WCF. Ambos os aplicativos compartilham o mesmo armazenamento de dados do Sql Membership Provider ... mas preciso de cada chamada do Serviço WCF para autenticar o usuário.

Agora, observei MUITOS exemplos, mas sinto que os exemplos que vi deixaram de fora certo código porque "deveria" ser óbvio para mim, ou entendo mal como o WCF lida com a solicitação (veja o esperado código abaixo).

Sou grato por qualquer ajuda ...

Aqui está o que eu já sei como fazer

Eu sei como configurar a associação sql em ambas as extremidades.Eu sei como configurar o wsHttpBindingEu sei como configurar o certificado de serviços usado na segurança de transporte

Aqui está o que eu estou confuso

Como posso passar a senha de membro (... você não pode)Eu passo o cookie de autenticação? Se sim, como?Crio um nome de usuário e senha "conhecidos" não relacionados ao usuário (eles mesmos)?

NO CLIENTE DA WEB, ESPERARIA VER O CÓDIGO ALGO ASSIM

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;
}

NO SERVIÇO WCF, ESPERARIA VER O CÓDIGO ALGO ASSIM

[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;
}

questionAnswers(2)

yourAnswerToTheQuestion