2012-06-22 10 views
6

Yo y mis colegas estamos desarrollando una aplicación (tanto la aplicación web como la aplicación móvil (iPhone & android)), que incluye un proceso de inicio de sesión. Actualmente, tenemos nuestro propio mecanismo de inicio de sesión (donde los usuarios han firmado una cuenta en nuestra aplicación y han almacenado su información en nuestra base de datos). Estamos buscando integrar OAuth y permitir a los usuarios iniciar sesión con Facebook, Twitter, LinkedIn y Google.¿Cuál es el estándar con oAuth para recordar a los usuarios?

Ahora, cuando los usuarios inician sesión con alguno de esos, entiendo que el proceso de inicio de sesión se produce fuera de nuestra aplicación y, básicamente, solo se obtiene permiso para acceder a sus recursos.

Mi pregunta es esta: a través de oAuth, ¿cómo recordamos a los usuarios? es decir, los usuarios que inician sesión tienen privilegios de lectura/escritura y tienen preferencias. ¿Cómo recordamos aquellos cuando en realidad no se registran en nuestra aplicación? ¿Podemos almacenar su dirección de correo electrónico en nuestra tabla de "Usuarios"?

¿Cuáles son las mejores prácticas en tal escenario?

Gracias por cualquier información que pueda proporcionar.

Respuesta

11

Al haber creado bases de datos de autenticación para algunos sitios web diferentes habilitados para OAuth, puedo decir que he aprendido algunas cosas que debe tener en cuenta.

  1. Debe tener una tabla de usuarios para su sitio que sea completamente independiente del proveedor de OAuth que utilizaron para iniciar sesión/iniciar sesión. Esto permite a los usuarios de su sitio combinar varias cuentas juntas bajo su identidad principal en su sitio. (Por ejemplo, asocie tanto a Facebook como a Twitter).
  2. Cuando permite que un usuario se registre, debe obtener una dirección de correo electrónico de ellos. Ya sea que le pidas Facebook, o si tienes que preguntar directamente. Esto le permite "actualizar" a los usuarios más tarde para que no dependan exclusivamente de OAuth de terceros y configure su propia contraseña en su sitio. (Simplemente envíeles un enlace a su página de restablecimiento de contraseña para que comiencen a crear su primera contraseña).
  3. No desea utilizar la dirección de correo electrónico como su clave principal. No estoy seguro de si eso es lo que realmente está describiendo o no, pero realmente quiere que tengan un ID de usuario local que usa para mantener su sesión, etc. A continuación, asocian su ID de Facebook o su ID de Twitter con ese local ID, y use la correspondencia entre tales identificadores para hacer coincidir cuál de los usuarios de su sitio debe considerar iniciar sesión.
+2

gracias por la retroalimentación !! Algunas preguntas: - Con respecto al punto n. ° 1, ¿está destinado a casos en que los usuarios inician sesión con diferentes cuentas de OAuth (Facebook, Twitter, ...), pero todavía están vinculados y se consideran UNA sola cuenta real? - Con respecto al punto n. ° 2, ¿qué quiere decir actualización? ¿Puedes aclarar este caso de uso? - Con respecto al punto n. ° 3, ¿el sistema/base de datos genera la "ID de usuario local" o el usuario final la especifica? – mustang888

+0

Además, ¿cómo manejaría el siguiente caso de uso: El usuario X inicia sesión a través de Facebook. Guardo su identificación de Facebook y la vinculo a una identificación de usuario local. La próxima vez, el usuario X inicia sesión a través de Twitter. ¿Cómo puedo determinar que es la misma persona (que accedió anteriormente a través de Facebook) para que pueda recuperar sus preferencias de usuario ... se basa en la dirección de correo electrónico (que podría ser común entre sus cuentas de Facebook y Twitter, o puede que no ser)?? ¡Gracias por la ayuda! – mustang888

+0

¿Cómo funcionaría esto con Twitter ya que no proporcionan el correo electrónico? ¿Cómo hay alguna manera de saber si el usuario de Twitter es el mismo que el usuario de Facebook sin una identidad única como el correo electrónico? – CMCDragonkai

Cuestiones relacionadas