Autenticación WCF utilizando el proveedor de membresía SQL

Espero que ustedes puedan aclarar algo de esto para mí. Tengo una aplicación web que utiliza el proveedor de membresía SQL y habla con una segunda aplicación web a través de un servicio WCF. Ambas aplicaciones comparten el mismo almacén de datos del proveedor de membresía SQL ... pero necesito cada llamada al servicio WCF para autenticar al usuario.

Ahora, he visto MUCHAS muestras, pero siento que las muestras que he visto dejan fuera cierto código porque "debería" ser obvio para mí, o no entiendo cómo WCF maneja la solicitud (ver esperado código a continuación).

Estoy agradecido por cualquier ayuda ...

AQUÍ ES LO QUE YA SABO CÓMO HACER

Sé cómo configurar la Membresía SQL en ambos extremos.Sé cómo configurar el wsHttpBindingSé cómo configurar el certificado de servicios utilizado en la seguridad del transporte.

AQUÍ ES LO QUE ME CONFUNDEN

¿Cómo puedo pasar la contraseña de membresía (... no puedes)¿Paso la cookie de autenticación? ¿Si es así, cómo?¿Creo un nombre de usuario y contraseña "conocidos" no relacionados con el usuario (ellos mismos)?

EN EL CLIENTE WEB ESPERARÍA VER CÓDIGO ALGO ASÍ

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

EN EL SERVICIO DE WCF ESPERARÍA VER CÓDIGO ALGO ASÍ

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta