Necesito implementar una solución SSO con los siguientes requisitos:
-
Dominio cruzado: Supongamos que tengo
a.com,b.comysso.com. Si me conecto a través dea.com, no debería tener que iniciar sesión cuando visitob.com. -
Centralizado: el usuario no registrado que hace clic en "Iniciar sesión" en
a.commuestra una pantalla de inicio de sesión alojada ensso.com. Las credenciales se verifican mediantesso.comen la fuente de datos a la que solo tiene acceso. -
Inicio de sesión automático: si el usuario ha iniciado sesión en
a.com, y posteriormente visitab.com, iniciará sesión inmediatamente. Es decir, enb.com, en lugar de un enlace de "Inicio de sesión" Queremos mostrar de inmediato su nombre de usuario, etc., sin la necesidad de hacer clic en nada. -
No hay redireccionamiento para usuarios anónimos: la gran mayoría de mis usuarios usarán los sitios sin tener una cuenta. Por lo tanto, cuando llegan a
a.com, ob.com, no debe haber un redireccionamiento rápido de toda la página asso.comy volver a verificar si están conectados. Tal redirección sería perjudicial para SEO y latencia.
Para los pocos usuarios que han iniciado sesión en a.com y luego van a b.com (o viceversa), se acepta una redirección.
Hay muchos ejemplos en la web para SSO, especialmente con OAuth2, OpenID Connect y CAS, pero no pude encontrar una receta para estos requisitos específicos. La más cercana es la guía de SSO de Stackoverflow ( aquí ), pero tienen algunos requisitos adicionales que no tengo (por ejemplo, el inicio de sesión aún debería funcionar si el servidor SSO no funciona).