Parece que está buscando Windows Communication Foundation Authentication Service.
EDIT:
Después de volver a leer la pregunta con más cuidado (y después el comentario de Ariel) Me gustaría retraer la sugerencia anterior. El Servicio de Autenticación WCF no agregará mucho a este escenario.
No he hecho esto entre WCF y ASP.NET; sin embargo, he configurado aplicaciones ASP.NET para compartir formularios de usuarios autenticados, quizás pueda ayudar de alguna manera.
Para asegurar que ambas aplicaciones puedan encriptar/desencriptar la cookie de autenticación de formularios de la misma forma que debería configure the <machineKey>
element para ambas aplicaciones (en web.config o machine.config dependiendo de si desea hacer esto en la máquina o en el nivel de aplicación)) Debería mirar los atributos validation
, validationKey
, decryption
y decryptionKey
.
Asegúrese de que sus elementos <forms>
en ambos archivos web.config estén configurados de manera similar. Específicamente los atributos name
, path
y domain
.
Es probable que esto sólo se aplica a las cookies se transfiere a/desde un navegador web (pero puede ser útil en este caso): Para permitir cookies para pasar entre los sitios web www.foo.com y bar.foo .com podrá configurar el elemento forms
de la siguiente manera para permitir que las cookies se establecen en un sitio y con éxito pasar a la otra:
<forms ... domain=".foo.com" ... />
Pasando la cookie al servicio WCF es probable que sea el poco complicado. No estoy muy experimentado con WCF, por lo I've adapted code from kennyw.com:
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add(HttpRequestHeader.Cookie, "<Forms Authentication Cookie>");
using (OperationContextScope scope = new OperationContextScope(serviceClient.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
serviceClient.MethodName();
}
Si usted es anfitrión de WCF dentro de IIS (y no autoalojamiento) se puede pasar la solicitud WCF a través de la canalización de procesamiento de ASP.NET mediante el establecimiento de
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" ... />
</system.serviceModel>
Si usted es independiente de alojamiento que podría examinar las cabeceras de petición utilizando las propiedades del mensaje entrante en OperationContext.Current.IncomingMessageProperties
y obtener el valor de la cookie de autenticación de formularios y descifrar usando FormsAuthentication.Decrypt(string)
.
No tengo idea de si algo de esto funcionaría, pero me encantaría saber si lo hace.
Hola Ariel, ¿cómo te hiciste con esta? Conozco a alguien con problemas similares. –