Control de acceso y autenticación mediante tokens de acceso de Facebook en una aplicación web

3

Estoy trabajando en una aplicación móvil con un backend web. Nos gustaría que los usuarios se autentiquen (inicien sesión) solo a través de Facebook, por lo que no tenemos que almacenar contraseñas, etc. y no obligamos a los usuarios a crear otra cuenta.

Sin embargo, me cuesta un poco ver cómo funciona esto. En este momento, cada vez que un usuario inicia sesión, Facebook devuelve un token de acceso. Me gustaría usar este token de acceso para asegurarme de que solo este usuario esté tratando de leer / escribir los datos que debería. La aplicación utiliza el backend al emitir solicitudes http (GET, POST, UPDATE y DELETE). Mi corazonada es que me gustaría almacenar este token de acceso en el servidor, hacer que la aplicación incluya el token con cada solicitud y luego comparar los dos.

El solo hecho de enviar el token como un parámetro de URL parece estúpido, ya que sospecho que esto es muy vulnerable a los ataques, ya que cualquier persona que escuche a escondidas tendrá este token y tendrá acceso a todo lo que esté en la aplicación Y en la página de Facebook del usuario.

¿Hay una mejor manera de hacer esto de forma segura? ¿O voy a hacer esto de forma totalmente incorrecta?

    
pregunta Linus 11.12.2012 - 22:40
fuente

3 respuestas

2

Probablemente quieras ver implementaciones de OAuth. Esto no solo le permitiría usar Facebook, sino muchos otros proveedores de cuentas para el inicio de sesión. También es un mecanismo establecido para usar cuentas de terceros para la autenticación.

    
respondido por el AJ Henderson 11.12.2012 - 22:51
fuente
2

Lo estás haciendo bien, y tu intuición de que usar un token de seguridad en un canal inseguro es inseguro, suena verdadero. Muchos sitios han sido víctimas de ataques de suplantación de identidad porque no protegieron las cookies de sesión a través de TLS (gmail, facebook, twitter, linkedIn y muchos otros). La respuesta corta es usar OAuth2.0 correctamente y luego usar TLS para cualquier conexión que necesite llevar el token de seguridad.

    
respondido por el Arthur Ulfeldt 11.12.2012 - 22:54
fuente
1

El inicio de sesión de Facebook utiliza OAuth2.0 para la autenticación y autorización. El cuadro de diálogo de inicio de sesión crea un enlace de confianza entre usted, sus usuarios y su información.

Consulte el sitio web developers en Facebook para obtener más información.

    
respondido por el Refineo 11.12.2012 - 22:51
fuente

Lea otras preguntas en las etiquetas