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?
Respuestas:
Movable Type utiliza un método de inicio de sesión muy similar al que usted describe. Personalmente no me importa, pero hay momentos en que se lo presento a un cliente y ellos pueden ayudar pero preguntar: "¿qué está pasando exactamente aquí?"
El proyecto que más me ha intrigado con respecto a la creación de un sistema de inicio de sesión coherente es Google Identity Toolkit . La experiencia del usuario es acertada, y la facilidad con la que parece implementable es muy atractiva.
fuente
google.com
(YouTube, por ejemplo) también usan este tipo de flujo de trabajo. (Si visito YouTube, luego inicio sesión en mi cuenta de Google en GMail, luego vuelvo a YouTube, permaneceré desconectado hasta que haga clic en "iniciar sesión" en ese momento, la página actual se recarga conmigo iniciada sesión)