seguridad de inicio de sesión de Facebook

1

Tengo una aplicación cliente / servidor, quiero iniciar sesión con Facebook en mi aplicación. Puedo obtener un token de acceso usando el inicio de sesión de Facebook del cliente y luego enviarlo al servidor para autenticar al usuario. Mi pregunta es, ¿cómo sé que fue mi aplicación la que se conectó a Facebook? ¿Qué sucede si otra aplicación en la que el usuario inició sesión con Facebook hizo esa solicitud?

    
pregunta Alfredo Altamirano 03.11.2016 - 02:49
fuente

1 respuesta

1

Facebook connect es prácticamente una conexión openid con algunos cambios. Entonces, para entender el modelo de seguridad, puede ser útil entender cómo funciona un verdadero. Hay muchos recursos disponibles en la red.

Su pregunta no es lo suficientemente específica como para darle una respuesta específica. Asumiré que está diseñando una aplicación de servidor diseñada para ser utilizada en navegadores (agentes de usuarios) y que realmente no se preocupa por qué aplicación realizó la solicitud de inicio de sesión original para autenticar al usuario, sino que desea evitar una escenario en el que un usuario que no tiene autorización para usar la aplicación de su servidor puede usarla porque se autenticó correctamente en Facebook anteriormente, ya sea directamente en fb o utilizando otra aplicación que usa Facebook Connect.

Los comentarios a su pregunta original ya proporcionan respuestas a esta pregunta:

Cuando obtenga un token de acceso de fb connect, debe verificarlo. Hay un punto final que proporciona Facebook para hacer eso, por lo que su aplicación de servidor debe enviar una solicitud de verificación a ese punto final. Si no lo verifica, tal como lo teme, podría terminar con un token de acceso que no fue diseñado para su aplicación, o para otro usuario, o que haya caducado. Si lo verifica, obtendrá una respuesta json del punto final de verificación que contiene un ID de usuario y un ID de aplicación. Puede comparar el ID de la aplicación con su propio ID de la aplicación para ver si el token está diseñado para su aplicación. Un atacante no debería poder generar un token con su ID de aplicación (en parte porque su ID de aplicación no debería ser conocida por nadie más que por FB y por usted). Pero la principal razón por la que nadie puede actuar como si fuera tu aplicación es porque debes proporcionar el secreto de la aplicación como parte del proceso de verificación. Sólo tú y FB conocen ese secreto. Por lo tanto, FB puede fallar en la verificación si la aplicación secreta y el ID de la aplicación en el token no pertenecen a la misma aplicación (en realidad, hay otro paso involucrado antes de la verificación: primero debe obtener un token de acceso a la aplicación para poder usarla con la verificación punto final, y para obtener el token de la aplicación, debe proporcionar su ID de aplicación y su secreto).

Desde la respuesta de verificación, también puede ver si el ID de usuario es el que espera que sea. Una vez que haya verificado el token, está autenticado y puede confiar en lo que dice sobre quién y para qué aplicación es el token. Hasta que no verifiques tokens, solo son reclamos que cualquiera podría hacer.

    
respondido por el Pascal 03.11.2016 - 09:20
fuente

Lea otras preguntas en las etiquetas