iphone - Comunicación segura entre el cliente iOS, la API de Facebook y el servidor.
security facebook-graph-api (1)
Me gustaría implementar una aplicación de iOS con el inicio de sesión de Facebook. Me gustaría que los usuarios de mi aplicación puedan interactuar con su gráfico social (es decir, publicar en su transmisión). Para ello usaría el SDK de iOS de Facebook.
Cuando los usuarios ya están autenticados con Facebook, también deberían poder usar algunos servicios en el lado del servidor de mi aplicación. ¿Cómo puedo verificar un usuario con los servicios en mi servidor?
En mi aplicación iOS puedo consultar el token de acceso (para mi aplicación de Facebook) usando el SDK de Facebook de iOS. ¿Debo enviar ese token de acceso junto con el ID de usuario de Facebook a mi servidor? ¿Puede el servidor verificar si el token de acceso es válido? ¿O solo debería mi aplicación iOS comunicarse con la API de Facebook? ¿El servidor puede publicar en mi muro de Facebook, o debería hacerse exclusivamente a través de la aplicación iOS?
ACTUALIZAR:
Facebook ahora proporciona una documentación de seguridad / lista de verificación: https://developers.facebook.com/docs/facebook-login/security/
Tienes al menos dos opciones:
Envíe el token de acceso a su servidor y maneje todas las solicitudes a Facebook usando ese token (si el token no es válido, obtiene un error y simplemente se lo pasa al cliente). => Seguro pero (un poco) complicado.
Separar la comunicación entre
- su cliente (aplicación iOS) y la API de Facebook y
- su cliente y su servidor.
Su aplicación manejaría todas las solicitudes a la API de Facebook a través del SDK de iOS de Facebook y luego comunicaría los datos resultantes, como todo tipo de ID de Facebook, a su servidor. Este enfoque es totalmente inseguro sin algún tipo de cifrado; puede enviar una función criptográfica hash a su servidor y validarla con una clave almacenada en su servidor y la aplicación iOS. => Este método es (un poco) más fácil de implementar, pero es menos seguro ya que la clave puede ser robada mediante ingeniería inversa. Además, tendría que marcar la marca de verificación "Estoy usando encriptación" cuando envíe su aplicación a la tienda de aplicaciones.
En realidad, depende de cuánto riesgo esté dispuesto a asumir, qué tipo de solicitudes hace, qué tipo de servicios tiene y así sucesivamente.
¿Puede el servidor verificar si el token de acceso es válido?
Sí, mira aquí: validación del lado del servidor de token de acceso de Facebook para la aplicación de iPhone