Estoy usando SAML 2.0 de Spring Security para conectar mi proveedor de servicios a múltiples proveedores de identidad.
Todo en la documentación SAML 2.0 de Spring tiene sentido. He leído muchos tutoriales útiles, incluido este , que es similar a mi código existente.
Sin embargo, me falta dónde y cómo seleccionar un proveedor de identidad para un usuario determinado .
Entiendo que SAMLDiscovery se puede usar para delegar la selección del proveedor de identidad a un servicio de terceros. También entiendo cómo configurar múltiples proveedores de identidad. Pero estoy buscando una manera de ejecutar mi propio código (es decir, verificar una base de datos) y luego activar una solicitud SAML para el proveedor de identidad elegido (no un servicio de terceros). Esperaría esto alrededor del momento en que se golpea SAMLEntryPoint . He visto mención de especificar EntityID en la solicitud inicial. ¿Está esto relacionado?
Estoy intentando realizar SAML 2.0 SSO iniciado por SP. ¿Puede alguien indicarme dónde puedo especificar manualmente un IdP basado en el usuario actual?
Hasta donde yo sé, SAML no ofrece ningún mecanismo para lo que desea. El descubrimiento de SAML se utiliza para averiguar qué IdP existen para su aplicación.
Su problema es que no sabe quién es el usuario antes de que intente iniciar sesión y cuando lo hace, significa que ya sabe qué IdP quiere usar.
Así que tienes estas opciones:
Una cosa a considerar. Desde el punto de vista de la seguridad, dar información a un pirata informático es una mala práctica, por lo que las opciones 2 y 3 le revelan a un pirata informático qué IdP pertenece a qué usuario. En mi opinión, esta no es una brecha tan grande y puede implementarse.
Esta no es realmente una pregunta de SAML, ya que cualquier solución ocurriría fuera de los estándares e implicaría identificar al usuario antes de pedirle que se autentique.
PATRÓN GENERAL
EXTENSIBILIDAD
Espero que mis comentarios anteriores muestren que un sistema IAM es una caja de herramientas y debe ser extensible. Trabajo en Curity, donde usamos un concepto de autenticadores y acciones que se pueden combinar, por ejemplo, para MFA, pero una opción común es la siguiente:
Aquí hay un artículo reciente para mostrar cómo funciona esto: el Autenticador de nombre de usuario es la parte interesante.
PROVEEDORES
Lamentablemente, es posible que Spring no proporcione las opciones que le gustaría. Sin embargo, esto debería aclarar un poco sus requisitos.