2011-09-04 18 views
7

Tengo una aplicación de servicio web WCF construida y probada en IIS7. Con respecto a la autenticación, quería implementar una identificación de usuario y autenticación de contraseña alojada en el servidor sql para los consumidores que acceden a las operaciones en el servicio web. Sin embargo, me dijeron que la política de mi empresa exige que implemente SAML en mi servicio web. Eso significa que cualquier cliente que esté accediendo a las operaciones de mi servicio web debe ser autenticado usando SAML 2.0. No estoy familiarizado con SAML, pero me gusta saber y comenzar a implementarlo en mi servicio web. Sigo escuchando dos términos: proveedor de servicios y proveedor de identidad, basado en las definiciones en la web, supongo que el proveedor del servicio es mi servicio web. el proveedor de identidad es donde el usuario se autentica y el proveedor de identidad proporciona una aserción a mi servicio web y luego dejo que el cliente acceda a las operaciones. Entiendo la teoría, pero no estoy seguro de cómo ponerla en práctica. Los clientes que acceden a mi servicio web no son internos, es decir, son externos (clientes de extranet), por lo que en este caso, ¿cuál será el proveedor de identidad y cómo agrego el código a mi servicio web para convertirlo en un proveedor de servicios?Cómo integrar la autenticación SAML en la aplicación de servicio web WCF

Espero que entienda mi dilema, ¿alguien puede explicar el enfoque que debo tomar y cualquier muestra o tutorial que me ayude a completar el servicio web es muy apreciado.

Respuesta

4

Creo que SAML 2.0 no es proporcionado por WCF estándar. Para que funcione, debe combinar WCF con WIF (fundación de identidad de Windows). Aquí tiene very complex example de uso WCF con WIF y autorización basada en reclamos. El ejemplo usa SAML 1.1 pero solo cambia la configuración para que funcione con SAML 2.0.

Su problema se conoce generalmente como autenticación federada o identidad federada donde el usuario se autentica contra STS (servicio de token de servicio) y recibe token de seguridad (puede ser, por ejemplo, token de SAML). Luego, el cliente llama al servicio real (RP - retransmisión) donde pasa su token de seguridad. Entonces, ¿qué vas a construir? Si la política de su empresa exige el uso de SAML, es muy probable que ya tengan STS y solo necesita autenticar los clientes mediante tokens de SAML como se menciona en el artículo.

+0

Tiene razón, tenemos STS. Entonces, para autenticar a los clientes que usan el token saml, ¿es el ejemplo que proporcionó el camino a seguir? – wcfvemi

2

Desde 2011, el soporte para los Servicios WCF Claims-Aware tiene apparently improved con el lanzamiento de .NET 4.5. Voy a copiar información de ese artículo en caso de que cambie alguna vez, pero a partir de la hora de esta respuesta, el proceso parece ser tan simple como:

  1. añadir una referencia a WIF (Microsoft.IdentityModel.dll) en su WCF Proyecto de servicio. Como esto se entrega con .NET 4.5, no creo que sea necesario un paquete NuGet.

  2. utilizar el siguiente ejemplo de código para crear un servicio de notificaciones auto-organizada:

    anfitrión var = new ServiceHost (typeof (ClaimsAwareWebService), nuevo Uri ("myUri")); FederatedServiceCredentials.ConfigureServiceHost (host);

    host.Open();

  3. Configure su servicio WCF para usar la extensión de comportamiento federatedServiceHostConfiguration.

Cuestiones relacionadas