2011-06-23 11 views
14

Por ejemplo:Usando OpenID para iniciar sesión en varios dominios: ¿Es factible este plan?

  • Estamos corriendo a dos sitios de la comunidad en dos dominios (llamarlos example.com y example.net).
  • Queremos 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 haya iniciado sesión en un sitio inicie sesión automáticamente en el otro (s).

En otras palabras, es un poco similar a la red StackExchange.

En este caso, ¿funcionaría este plan?

  • Establecer example.com y example.net (y cualquier añadido posterior) como OpenID partes de confianza, que aceptan OpenID de solamente id.example.org.
  • example.com Puesta en funcionamiento y example.net hacer una solicitud de OpenID de respuesta inmediata la primera vez que los visita, por lo que si usted está conectado a id.example.org que estés inmediata y automáticamente iniciar sesión en el sitio que está visitando. Deben establecer una cookie si no están conectados, para guardarlos haciendo esto en cada solicitud de página.
  • Configure id.example.org como un proveedor y consumidor de OpenID. También debe consumir Facebook y otros proveedores de identidad, y permitir el acceso estándar de usuario/contraseña. (Se pueden asociar varios métodos de inicio de sesión a una cuenta.)
  • Al cerrar la sesión, simplemente cambie los tokens de autenticación en la base de datos. El usuario aún tendrá cookies, pero no tendrán sentido. Por lo tanto, puede el usuario cerrar sesión en todos los sitios al mismo tiempo. Los tokens de autenticación múltiples se pueden almacenar contra un usuario a la vez (y deben ser diferentes para cada sitio), de modo que el usuario pueda cerrar la 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 veo con lo anterior es la siguiente:

  • example.com Un usuario visita. Se ha configurado una cookie "no iniciada".
  • Zie pasa al example.net. Ídem.
  • Zie inicia sesión y continúa navegando en example.net.
  • Zie luego regresa a example.com y, debido a la "no conectados en" galleta, no se compara con id.example.org y por lo tanto no está conectado.
  • Sin embargo, tan pronto como zie hace clic en el "Log in" botón, zie ha iniciado sesión.

No creo que sea un problema grave.

En general, creo que es un sistema bastante bueno. 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. Supongo que tienen una buena razón para eso.

+0

http://www.bbc.co.uk/dna/h2g2/F20154027?thread=8074058. – TRiG

Respuesta

1

En general, su configuración se ve bien.Espero que haya cubierto el manejo de expiración/tiempos de espera de la sesión.

El único problema (y es más un inconveniente) que veo es la necesidad de hacer clic en 'Iniciar sesión' explícitamente. Personalmente, prefiero los inicios de sesión automáticos (como Google, MS y muchos otros sitios importantes).

SO detecta si tiene un inicio de sesión válido y muestra un mensaje solicitando que actualice la página. Aunque algo molesto, al menos me dice que estoy conectado.

+0

La necesidad de hacer clic explícitamente ocurriría solo si ha estado navegando el sitio cerrado, y luego ha iniciado sesión en el otro sitio. Creo que sería un caso bastante raro que no necesito que me moleste. Espero. La forma en que lo hace StackExchange es bastante extraño, pero parece funcionar. – TRiG

+0

¿Alguna vez trabajó en esto? Estoy buscando hacer algo similar. Usando Devise que se basa en la joya oa-omniauth. –

+0

@rajatbanerjee. Terminó no sucediendo, pero de todos modos podría trabajar en eso por el simple hecho de hacerlo. Sería interesante. – TRiG

Cuestiones relacionadas