2012-07-10 23 views
12

Tenemos dos productos separados, que incluyen la aplicación web y el servidor.Cómo implementar o integrar el inicio de sesión único con SAML y Shibboleth

Queremos implementar Single Sign On para ambos, por lo que cuando un usuario ha iniciado sesión en un producto, puede acceder automáticamente a los recursos en el otro producto que le pertenece.

He explorado un poco y encuentro que SAML es un buen enfoque que podemos tomar, pero no estamos seguros de cómo queremos proceder.

¿Es una buena idea implementar nuestro propio Proveedor de servicios? Miré a Shib SP, pero parece que si quiero integrarlo en mis productos, tampoco será tan fácil.

Así que estoy buscando algunas sugerencias de personas que han encontrado un problema similar anteriormente.

Otra pregunta es: ¿qué recurso puedo estudiar si necesito implementar un SP usando OpenSaml? Parece que no hay muchos tutoriales o ejemplos a los que pueda hacer referencia.

También me gustaría mucho que alguien me indique algunos procedimientos o componentes importantes que mi propio SP debe contener.

EDIT 1:

sólo tratar de proporcionar más detalles acerca de lo que quiero. Tenemos dos productos separados. Actualmente podemos externalizar la base de datos de usuarios. Por ejemplo, nuestros productos pueden ser configed para conectarse al servidor LDAP o cualquier otro DB de usuario externo siempre que implementen un servicio correctamente.

Ahora nuestro objetivo es que queremos SSO para nuestros dos productos. Un escenario es que tenemos nuestro propio componente SP (implementar o integrar) en ambos productos. El cliente puede tener su propio IdP. Con alguna configuración, nuestro SP puede conectarse a su IdP y realizar la autenticación desde allí, y el usuario no necesita iniciar sesión dos veces para acceder a ambos productos. De causa, podemos proporcionar un IdP de fábrica si el cliente no lo tiene.

Respuesta

13

La mayor dificultad con Shibboleth es que, efectivamente, es una implementación de referencia de la especificación SAML v2.0.

Para la mayoría de las instalaciones de rutina, sin embargo, realmente necesita muy poco de la especificación SAML para habilitar un par de aplicaciones web para SSO.

Pero como Shibboleth lo implementa todo, con todas sus capacidades, puede ser difícil de configurar.

Hicimos un proyecto con Shibboleth (y fue sin duda un caso de uso extremo), y, para mí, un novato de SAML en ese momento, era realmente una tarea ardua poner todo en marcha y funcionando.

Para nuestra próxima puñalada, miré el SAML spec para SSO a través del perfil web. Si lo lees, es bastante sencillo para este caso de uso limitado. Y decidimos que en lugar de usar Shibboleth nuevamente, escribiríamos nuestro propio IdP y SP usando las bibliotecas OpenSAML.

¿Podríamos haber conseguido que Shibboleth funcione más rápido? Probablemente. Pero no creo que tengamos la comprensión de eso que hacemos nosotros mismos. Un poco de No inventado. Aquí, claro, pero esto es bastante confuso cuando entiendes el software y el vocabulario, y mucho menos cuando no lo haces. Y SAML está lleno de nuevo vocabulario.

También puede considerar usar SimpleSAML como un IdP y escribir su propio SP para sus aplicaciones web. SimpleSAML está en PHP, pero es un poco más fácil de usar. Simplemente puede tratarlo como un servicio de apache autónomo.

Diré que nuestro SP pesa alrededor de 1000 líneas de código javadoc, pero es sobre todo el cableado de OpenSAML todo junto y algunas cosas de utilidad. En verdad no es tan aterrador. Sin embargo, prepárate para realmente disfrutar leyendo blobs XML firmados.

Es frustrante que esto realmente no es sencillo, pero es un poco de una cosa de pollo/huevo sobre la adopción etc.

Y si ninguna de que más le convenga, se puede ver en OAuth2 y algunos de sus perfiles.

+0

Tengo exactamente la misma sensación que cuando intento configurar una demostración usando Shib SP e IdP. Es muy poderoso y flexible. He pasado tanto tiempo leyendo su wiki y otros recursos relacionados de Google. Hay muchos vocabularios nuevos que debemos entender.Muchas gracias por tu publicación. Me hace más valiente intentar implementar nuestro propio SP. ¿Puede compartir conmigo algunos recursos o ejemplos a los que se refirió al escribir su propio código SP? No veo mucho en Internet. – performanceuser

+0

Busqué en Google y encontré http://code.google.com/p/websso/. No usé esto yo mismo, pero como primer corte se ve bastante bien. Tiene ambos lados SP e IdP de la ecuación. El check de svn es ... grande. También encontré http://www.capcourse.com/Library/OpenSAML/index.html, pero su código no tiene una licencia (obvia), así que no lo miré demasiado de cerca. Pero tiene ejemplos genéricos de SAML que podrías ver si te quedas atascado. –

+0

Muchas gracias. Voy a echar un vistazo a estos ejemplos. – performanceuser

3

Si solo desea implementar SSO entre 2 productos, creo que sí, crear algo desde el principio es más fácil. Si es Java, OpenSaml de Shibboleth es una muy buena lib.

Al comenzar a implementar más cosas, y en algunos escenarios complejos, buscar algo que ya esté construido es la mejor opción. También debe tener en cuenta varias cosas que probablemente escriba por sistema (por ejemplo, generación de afirmaciones, xml-dsig, validación, etc.).

De un vistazo, puede parecer que los productos ya construidos son demasiado complejos o difíciles de adaptar o adaptar a sus necesidades particulares. Pero su esfuerzo de desarrollo escribiendo conectores e implementaciones puede ser recompensado cuando desee explotar todas las capacidades de SAML.

Sería muy útil, sin embargo, si puede explicar con más detalle lo que quiere lograr; Siento que su pregunta es bastante abierta ...

+0

Gracias. He actualizado mi publicación original. Estoy de acuerdo que la pregunta es algo así como abierta. Intenté proporcionar todos los detalles que puedo. – performanceuser

+0

@performanceuser dada su actualización, y si no va más allá, recomendaría escribir un punto final que consuma una afirmación SAML simple que haga toda la lógica, y pidiendo a su cliente que publique allí para habilitar el inicio de sesión de su lado. Todavía tienes que encargarme de algunas cosas (es decir, desconectarme, seguridad) pero creo que el momento de escribirlo y conocer la restricción es menor al que necesitarías para comprender el producto completo de Shibo. –

+0

Gracias. Trataré de implementar uno. ¿Puede compartir conmigo algunos recursos o ejemplos sobre la implementación de SP utilizando openSAML? No veo mucho en Internet. – performanceuser

0

No tengo experiencia personal con el Proveedor de servicios Shibboleth, pero actualmente estoy desarrollando una arquitectura que usa Shibboleth IdP, Shibboleth Discovery Service y Guanxi Service Provider. Integrar el módulo de Guardia ligero del proveedor de servicios de Guanxi con la aplicación de Internet Java es muy sencillo, y puede obtener fácilmente una arquitectura basada en Shibboleth sin escribir sus propios módulos. Hay localhost tutorial para configurar Guanxi SP, solo omita las partes acerca de Guanxi WAYF e IdP y use los componentes Shibboleth en su lugar.

+0

Gracias por su información. Esta es la primera vez que escucho de Guanxi. ¿Sabes si es gratis? – performanceuser

+0

[1]: https://github.com/guanxi/guanxi-sp-engine/blob/master/README [2]: https://github.com/guanxi/guanxi-sp-guard/blob/ maestro/README – Erwin

Cuestiones relacionadas