2011-07-19 19 views
10

siguientes preguntas asumen que estamos de alojamiento en había un lado servicio WCF a lado con Asp.Net:¿Las solicitudes a un servicio WCF alojado por WAS están autenticadas por el canal de proceso de IIS o ...?

"Cuando aloja lado a lado con WCF Asp.Net - El WCF alojamiento intercepta las peticiones de infraestructura WCF cuando las El evento PostAuthenticateRequest se genera y no devuelve el procesamiento a la canalización HTTP de ASP.NET. Los módulos que están codificados para interceptar solicitudes en etapas posteriores de la interconexión no interceptan las solicitudes WCF . "

"Con, infraestructura de alojamiento de la WCF mensajes y los envía fuera de la tubería HTTP intercepta WCF lado-a-lado configuración"

a) Suponiendo FUE reciba una solicitud de un servicio WCF, se WCF de mecanismo de autenticación ( de Windows, MembershipProvider o personalizada autenticación) invocarse cuando se eleva PostAuthenticateRequest evento o se WCF autenticar una solicitud sólo después dirige la petición fuera de la tubería de HTTP? En otras palabras, ¿el mecanismo de autenticación de WCF funciona fuera del proceso de procesamiento de IIS?

b) Si el mecanismo de autenticación de WCF está trabajando fuera de la canalización de procesamiento de IIS, entonces supongo FormsAuthenticationModule no está involucrado con la autenticación del cliente WCF (suponiendo servicio está utilizando formas de autenticación)?

c) Además, si el mecanismo de autenticación de WCF funciona fuera de la interconexión de procesamiento de IIS, entonces supongo que IIS/WAS debe configurarse para autenticación anónima, incluso si el servicio es autenticación de clientes que utilizan autenticación de Windows.

d) ¿Las respuestas a mi pregunta anterior serían diferentes si el servicio WCF fue alojado por IIS7 (además del hecho de que el servicio solo debe usar puntos finales que se comunican a través del protocolo HTTP)?

Gracias

Respuesta

1

yo recomendaría la implementación de un proyecto pico técnica.

En el núcleo siempre puede implementar un atributo de acceso de código para asegurar sus contactos de operación.

Puede comenzar aplicando PrincipalPermission (incorporada) donde se define IPrincipal en Thread.CurrentPrincipal (constructor de su servicio WCF) cuando alojado en IIS se puede establecer HttpContext.Current.User embargo HttpContext será nulo en su caso . Para utilizar PrincipalPermission, deberá tener su propia capacidad para crear/implementar IPrincipal.

1

Solo puedo responder la parte D y parte de B, pero esto puede ser suficiente para resolver el problema que está tratando de resolver: si aloja el servicio WCF dentro de una aplicación ASP.Net, entonces se admite la autenticación de formularios SI habilitar la compatibilidad de ASP.Net en el servicio WCF. Usamos este método ampliamente con nuestros applets de Silverlight.

Este es un proceso de dos pasos:

1) Decoración de la implementación de un servicio WCF clase con el atributo AspNetCompatibilityRequirements (vb.código de red a continuación):

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _ 

2) Añadir la siguiente entrada a la sección de <system.servicemodel> en web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
Cuestiones relacionadas