ios4 Diseño para la autenticación de Facebook en una aplicación de iOS que también accede a un servicio web seguro





2 Answers

Use https para transmitir el token de autenticación a su servidor, como lo indica Facebook

Intercambio de tokens de acceso

Nuestras políticas de datos prohíben explícitamente el uso compartido de un token de acceso para su aplicación con cualquier otra aplicación. Sin embargo, permitimos que los desarrolladores compartan Tokens entre una implementación nativa y una implementación de servidor de la misma Aplicación (es decir, utilizando la misma ID de la aplicación) siempre que la transferencia se realice mediante HTTPS.

ios ios4 facebook facebook-graph-api

Objetivo: permitir que un usuario se autentique con Facebook en una aplicación de iOS que requiera acceso a un servicio web protegido que estoy ejecutando.

Supuestos: existe un sistema nativo de autenticación (y registro) para aquellos usuarios que optan por no usar Facebook para iniciar sesión.

Detalles:

  • Supongamos que queremos ofrecer la opción para que un usuario inicie sesión con Facebook sin crear una cuenta / credencial separada para nuestro sistema.
  • Debido a que admitimos nuestro propio mecanismo de autenticación nativo (nombre de usuario y contraseña), tenemos nuestros propios ID de usuario y emitimos un token de autenticación que se usa para las interacciones posteriores después de la validación de credencial inicial.

Me sorprende que Facebook no tenga las mejores prácticas para esto en su documentación de desarrollador. Toda la documentación existente asume que usted está creando la autenticación FB en un sitio web o una aplicación móvil independiente sin servicio que requiera autenticación.

Aquí están mis pensamientos iniciales sobre cómo se diseñaría esto, pero quiero validación sobre si es correcto.

  1. Cliente abre el inicio de sesión de Facebook iOS
  2. El usuario UI inicia sesión con las credenciales de Facebook y obtiene el token de acceso
  3. La aplicación iOS pasa el token de acceso a nuestro servidor
  4. Nuestro servidor habla con la API del gráfico FB usando el token de acceso para (a) validar el token y (b) obtener el ID de usuario de FB para ese token de acceso.

    Por ejemplo, nuestro servidor llamaría https://graph.facebook.com/me/?access_token=XYZ que devolvería información de perfil en un objeto JSON

  5. Suponiendo que sea válido, nuestro servidor extrae la ID de usuario del objeto JSON y comprueba si el usuario ya tiene una cuenta. Si es así, emitimos nuestro propio ticket de autenticación para que el cliente lo use para esa sesión. Si el usuario no tiene una cuenta, creamos una nueva con el ID de usuario de Facebook, asignamos nuestro propio ID de usuario único y emitimos nuestro ticket de autenticación.

  6. Luego, el cliente devuelve el ticket de autenticación a las interacciones subsiguientes que necesitan autenticación.

Este parece ser el enfoque correcto para mí, pero no estoy seguro de si me estoy perdiendo algo increíblemente básico y me estoy yendo por el camino equivocado (complicado).




Su solución funciona totalmente.

Quizás una alternativa: ¿por qué no solo recibir el correo electrónico en el cliente desde la solicitud de servicio social inicial y enviarlo a su servicio web? El servicio web podría simplemente almacenar el correo electrónico, y tal vez también un proveedor social. Entiendo que su servicio web no podrá validar de dónde proviene el correo electrónico, pero ¿no existe una relación de alta confianza entre su servicio web y su cliente? Si lo hay, parece que puedes confiar en el correo electrónico que viene del lugar correcto. Alguien, por favor, hágame saber qué cosa obvia me falta, que hace que el enfoque basado en el correo electrónico sea tonto ...






Related