Pregunta

Recibí un par de preguntas de implementación SAML para aclarar mi confusión ...

Necesito implementar SSO en una aplicación web Java.

  1. Para hacerlo, necesito Shibboleth SP instalado en mi host al igual que, ¿o puedo proporcionar la funcionalidad SP a través de OpenSAML?

  2. Supongo que Shibboleth está haciendo lo mismo que OpenSAML pero solo en un nivel de servidor web, mientras que OpenSAML lo hará en el lado del software. ¿Es esa suposición correcta?

EDITAR: Entonces, Shibboleth (según Scott Cantor) se construye con OpenSaml ... ¿Sigue mi suposición?

  1. ¿Qué se necesitará para usar OpenSaml? ¿Solo la URL de IDP y un registro con el IDP?

  2. ¿Necesito proporcionar un directorio SP, por ejemplo, Activedirectory/LDAP?

EDITAR: Gracias por las respuestas, pero ¿puede alguien responder directamente las preguntas anteriores y elaborarlas ...

¿Fue útil?

Solución

¿Qué se necesitará para usar OpenSaml? ¿Solo la URL de IDP y un registro con el IDP?

Necesita Java y un contenedor web, e incluye la biblioteca OpenSAML en su guerra.

Debe almacenar metadatos de IDP localmente o buscarlo cada vez que desee enviar authnRequest o procesar samlResponse. También debe registrar sus metadatos SP en el lado del IDP.

Si está utilizando Shibboleth como IDP, los metadatos SP deben configurarse en el archivo conf/confiar-piart.xml.

¿Necesito proporcionar un directorio SP, por ejemplo, Activedirectory/LDAP?

Para iniciar sesión en IDP, debe configurar LDAP o servidor de base de datos en el lado de IDP y configurarlo en conf/attribute-resolver.xml y conf/login.config.

Otros consejos

Actualizaciones para abordar sus ediciones:

Aquí hay algunas opciones de SAML 2 que puede usar.

Shibboleth sp es un producto que implementa SAML 2.0 para usted, pero OpenSaml es solo un biblioteca con el que podría implementar una solución SAML 2.0. La biblioteca en sí es de bajo nivel y ni siquiera está cerca de ser una solución SSO. OpenSAML no es una solución SAML 2.0 por sí misma.

Para usar OpenSaml o ningún Solución SAML 2.0, deberá intercambiar metadatos como se indica a continuación. Con OpenSAML tendrá que generar a mano un archivo XML para sus propios metadatos también. Será mucho trabajo como se indica a continuación. Los productos SAML 2.0 generarán ese archivo de metadatos XML para usted y también generarán las claves RSA requeridas utilizadas para el cifrado y la firma de las afirmaciones SAML 2.0. Con OpenSAML, tendrá soporte de API para cargar partes de los archivos XML y API para generar y analizar sus afirmaciones, pero escribirá el código Java que realmente construye la interacción SSO.

El SP lo hace no necesariamente necesita ActiveDirectory/LDAP, pero necesitará algún tipo de directorio en su aplicación web que realice un seguimiento de los usuarios. Si su aplicación web ya tiene una noción de usuarios con información de identificación que puede usar para correlacionarlos con la noción de usuarios del IDP, puede mapear aquellos en su aplicación web en función de los valores de atributos en sus afirmaciones SAML 2.0. (Si a su aplicación web no le importa quiénes son los usuarios, simplemente puede permitir el acceso a la aplicación en función de que el usuario sea "válido").

--

La integración de SSO SSO con una aplicación web Java no es demasiado difícil. El uso de OpenSAML para implementar el SSO funcionaría, pero sería mucho más esfuerzo que integrar un servidor Apache con Shibboleth.

Usar shibboleth requiere que tenga apache2 con el módulo shibboleth habilitado y que tienes el daemon Shibboleth SP instalado. Por lo general, esos estarían juntos en la misma caja. Si está utilizando TOMCAT para alojar la aplicación web Java, le recomiendo que use MOD_PROXY_AJP para comunicarse entre el servidor HTTP APACHE2 y TOMCAT. De esa manera, puede recoger las variables proporcionadas por Shibolleth como atributos de solicitud de servlet. (Debe establecer el prefijo variable en "AJP_" en shibboleth2.xml).

El paquete Shibboleth SP ya maneja todos los escenarios estándar de SAML SSO que puede esperar encontrar, pero tratar de implementar incluso uno de los que tiene OpenSAML directamente en su aplicación Java está lleno de peligros tanto de hacer que funcione como para que se asegure . También aumentará el tamaño de su aplicación web si usa OpenSAML. Vale la pena señalar que el Shibboleth SP no está escrito en Java, por lo que no tendrá ejemplos de usar OpenSAML para eso, pero es posible que pueda obtener una idea mirando el código Shibboleth IDP, que es una aplicación web de Java.

En cualquier caso, deberá intercambiar sus metadatos SP (se crea fácilmente con el paquete Shibboleth SP) con su proveedor de identidad y también obtener los metadatos del proveedor de identidad en su SP (también fácil con el paquete Shibboleth SP, ya que simplemente configura un Metadataprovider).

La documentación de Shibboleth en línea lo ayudará mucho una vez que se acostumbres a usarlo.

Creo que tendrá muchas mayores posibilidades de éxito si puede usar el paquete Shibboleth SP en lugar de implementar una solución SSO SAML 2 con las bibliotecas OpenSAML. No puedo hablar con las otras soluciones SSO All-Java SAML 2, pero todas parecen grandes y demasiado empresarias en comparación con un simple Shibboleth 2 SP.

Debe publicar tales preguntas en las listas de correo relevantes administradas por el proyecto Shibboleth.

OpenSAML es un kit de herramientas de muy bajo nivel para implementar soluciones SAML, Shibboleth es un paquete SSO para aplicaciones web que admiten SAML que se construye con OpenSAML. Construir soluciones de seguridad es compleja y requiere experiencia. Si no tiene esa experiencia, hará un mal trabajo y OpenSAML no está documentado de manera que un desarrollador típico pueda construir una solución desde cero.

Considere usar una implementación completa, ya sea Shibboleth o algo más. Si no puede vivir con Apache y Native Code y necesita Java, entonces debe probar una de las opciones existentes de Java SP que existen. Incluso si fueran inadecuados, debes construir sobre ellos y no duplicarlos.

Sí, debe instalar SP en su servidor o en su máquina. Y dependería de su servidor web, como IIS o Apache.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top