2012-05-29 127 views
6

Mi requisito es implementar SSO usando SAML2.0 en asp.net. Tengo 2 proveedores en mi extremo. Quiere pasar al usuario de un sitio a otro sitio sin iniciar sesión en el segundo. Nunca antes había usado SAML2.0. ¿Alguien me puede ayudar cómo puedo hacerlo?SSO usando SAML2.0 en asp.net

Gracias, Dipa

Respuesta

6

le recomiendo que utilice el subsistema de Windows Identity Foundation que simplifica tratar con la autenticación basada en SAML.

El tema es bastante amplio por lo que necesita un buen manual y afortunadamente hay una, de forma gratuita desde MS:

http://msdn.microsoft.com/en-us/library/ff423674.aspx

En resumen: para pasar la identidad entre dos servidores, uno de ellos debe implementar el servicio Proveedor de identidad (Servicio de token de seguridad) y el segundo tiene que aceptar tokens SAML creados y firmados por el primero.

+0

Gracias, Wiktor Zychla por sus valiosos comentarios. Déjame echar un vistazo a esto. – dipa

+0

@Wiktor Zychla este es genial link – Ravia

21

Primero diferenciemos el protocolo con el formato de token. Supongo que estás hablando del protocolo y no del formato de token. Pero por si acaso estas son las diferencias:

  • SAML 2 formato de token. Este es simplemente el formato del token que su aplicación podrá soportar. Esto es compatible con WIF recién sacado de la caja.
  • Protocolo SAML 2. Esta es la interacción HTTP que su aplicación deberá comprender para obtener un token en la aplicación. Esto no es compatible con WIF, pero hay una extensión que puede descargar (http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=36088)

Por otro lado, tiene un escenario en el que hay múltiples proveedores de identidades. El libro que Wiktor sugirió (del cual soy coautor) explica este escenario con más detalle en el Federated Identity with Multiple Partners chapter. Te recomiendo que lo leas para entender los conceptos que hay detrás de la federación de identidades. Déjame darte la versión corta del artículo y algunos detalles de implementación. Hay dos maneras de resolver esto:

  • Implementándolo en el nivel de la aplicación. WIF le permitirá confiar en más de un token de proveedor de identidad (esto se hace con certificados X509). A continuación, deberá generar solicitudes de inicio de sesión para cada proveedor de identidad en función de una url (como https://idp1.yourapp.com o https://yourapp.com/idp1) o de que el usuario elija (al tener una página de inicio con dos enlaces, uno para cada proveedor de identidad). También deberá normalizar los reclamos que provengan de ese proveedor de identidad (tal vez uno de ellos le enviará un reclamo de "nombre" y el otro un reclamo "upn").

    YourApp --> Identity Provider 1 
         \-> Identity Provider 2 
    
  • Utilizando lo que se denomina "proveedor de federación". Este es otro servidor que emitirá tokens a su aplicación y tendrá las relaciones de confianza con su proveedor de identidad. En lugar de hacer que su aplicación confíe en los dos proveedores de identidad, solo confía en su proveedor de federación y el proveedor de servicios de alimentación confiará en los proveedores de identidad. Es una cadena de confianza.

    YourApp --> Federation Provider --> Identity Provider 1 
               \-> Identity Provider 2 
    

Esta arquitectura permite:

  • crecer sus proveedores de identidad sin tocar su aplicación
  • si más adelante tiene una segunda aplicación que acaba de copiar su puesta en práctica de la primera
  • obtienes el inicio de sesión único gratis
  • obtienes un motor de transformación de reclamos (si utiliza algo así como AD FS)
  • si utiliza algo así como AD FS que presentamos lo SAML 2 protocolo construido en (en lugar de tener que aplicar a mano con la extensión se menciona a continuación)

Por supuesto, la desventaja es que usted ahora tiene algo más para mantener (el servidor ADFS).

+0

Un gran resumen. Gracias. Ha sido sorprendentemente difícil de encontrar, condensado hasta aquí. –

3

Recomendaría usar ComponentSpace. Proporcionan una biblioteca que se adapta a todos los casos de uso de un token SAML 2.0 y un protocolo SAML 2.0. WIF actualmente no brinda soporte para el protocolo SAML 2.0 y el formato de token, excepto en un CTP.

+1

.Net 4.0 admite SAML 2.0 – Ravia

+0

@Ravia - ¿Puede proporcionar un enlace donde dice que está disponible? Por lo que yo sé, al ver este enlace, http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=36088 es una versión de CTP y no una RTM. – kshbondili

+0

tienes razón, mi error votó la respuesta. – Ravia

4

escribimos una muy simple de código abierto de C# componente para su uso con aplicaciones ASP.NET: https://github.com/jitbit/AspNetSaml (ejemplos de código incluidos)

Es muy corto y básico, pero ese era el objetivo. En lugar de agregar un gran paquete de terceros, simplemente arroje un archivo C# corto a su proyecto y estará listo para SAML. Esto nos ha funcionado por años, incluso en .NET 3.x

[Descargo de responsabilidad] Soy uno de los colaboradores.

PS. Los tenedores y las contribuciones son muy bienvenidos.