Necesito implementar una solución SSO con los siguientes requisitos:
-
Dominio cruzado: Supongamos que tengo
a.com
,b.com
ysso.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.com
muestra una pantalla de inicio de sesión alojada ensso.com
. Las credenciales se verifican mediantesso.com
en 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.com
y 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).