Por ejemplo:
- Estamos ejecutando dos sitios de la comunidad en dos dominios (llámalos
example.com
yexample.net
). - Queremos poder expandir eso a más dominios más adelante.
- Queremos permitir múltiples tipos de inicio de sesión (OpenID, Facebook, Twitter, nombre de usuario / contraseña estándar).
- Queremos que alguien que ha iniciado sesión en un sitio inicie sesión automáticamente en los otros.
En otras palabras, es un poco similar a la red StackExchange.
En este caso, ¿funcionaría este plan?
- Configure
example.com
yexample.net
(y cualquier adición posterior) como partes confiables de OpenID, que solo aceptan el inicio de sesión de OpenIDid.example.org
. - Configure
example.com
yexample.net
haga una solicitud de respuesta inmediata de OpenID la primera vez que los visite, de modo que si inicia sesión, inicia sesión de formaid.example.org
inmediata y automática en el sitio que está visitando. Deben establecer una cookie si no ha iniciado sesión, para guardarlos haciendo esto en cada solicitud de página. - Configurar
id.example.org
como proveedor y consumidor de OpenID. También debería consumir Facebook y otros proveedores de identidad, y permitir el acceso estándar de nombre de usuario / contraseña. (Se pueden adjuntar varios métodos de inicio de sesión a una cuenta). - Al cerrar sesión, simplemente cambie los tokens de autenticación en la base de datos. El usuario seguirá teniendo cookies, pero no tendrán sentido. Por lo tanto, el usuario puede cerrar sesión en todos los sitios simultáneamente. Se pueden almacenar múltiples tokens de autenticación contra un usuario a la vez (y deben ser diferentes para cada sitio), de modo que el usuario pueda cerrar sesión en un navegador pero aún así iniciar sesión en otro. Cerrar sesión siempre cierra sesión en todos los sitios.
El único problema que puedo ver con lo anterior es este:
- Alguien visita
example.com
. Se establece una cookie "no iniciada sesión". - Zie luego continúa
example.net
. Ídem. - Zie luego inicia sesión y continúa navegando
example.net
. - Luego, Zie regresa
example.com
y, debido a la cookie "no iniciada sesión", no se verificaid.example.org
y, por lo tanto, no se inicia sesión. - Sin embargo, tan pronto como zie hace clic en el botón "iniciar sesión", zie inicia sesión.
No creo que este sea un problema importante.
En general, creo que es un sistema bastante bueno. Solo me gustaría verlo revisado. ¿Hay algún problema que no haya previsto? ¿Sería con errores o lento? StackExchange usa un método muy diferente. ¿Asumo que tienen una buena razón para eso?