web-services - español - web api ejemplo
¿Puedo usar Facebook OAuth para asegurar mi servicio web RESTful? (1)
Estoy escribiendo una aplicación para teléfono móvil que permite a los usuarios registrarse a través de Facebook. Una vez registrados, los usuarios pueden acceder a información personalizada a través de un servicio web RESTful que alojaré.
He visto varias aplicaciones móviles que parecen usar una configuración similar, pero solo presentan la autenticación OAuth de Facebook (o Twitter) a sus usuarios. Me pregunto cómo se hace esto?
Pensé que, para proteger este servicio web, podría usar la autenticación HTTP básica a través de HTTPS con el token de acceso Facebook OAuth de Facebook como contraseña.
¿Esto es seguro? ¿Cómo manejan otras aplicaciones la seguridad cuando solo registran usuarios a través de Facebook?
Las aplicaciones que usan este tipo de formato generalmente hacen lo siguiente:
- La aplicación en sí es una aplicación registrada con FB, lo que significa que tiene una clave de aplicación
- Cuando el usuario se registra utilizando FB, lo que realmente está sucediendo es que está otorgando permisos a la aplicación, lo que le permite ver sus datos, publicar en su muro, etc. (independientemente de los permisos que solicite la aplicación)
- Una vez que el usuario inicia sesión, la aplicación puede solicitar su información a FB, siempre que se autentique con el servicio utilizando su clave de aplicación.
Entonces, dentro de su aplicación, generalmente almacenará la ID del FB del usuario, y cuando realiza solicitudes de datos (o solicitudes para publicar en la pared, etc.), envía su clave de la aplicación + la identificación del FB del usuario, junto con cualquier información de acción que necesite suministrar. El servicio de FB luego responde con los datos que tiene permisos para ver, o realiza la acción, siempre que tenga permiso para realizarla.
En un ambiente RESTful, el truco es que se supone que usted es totalmente apátrida, lo que significa que no se realiza el seguimiento de ninguna sesión. Sin embargo, esto está bien, porque tu aplicación ya tiene su clave de la aplicación, por lo que todo lo que necesitas es la identificación del FB del usuario por solicitud. Es bastante fácil si solo inserta el ID en una cookie, o lo gestiona desde el lado del cliente. ¿Cómo funciona esto?
Cuando registra su aplicación en Facebook, debe proporcionar una URL en la que alojará esa aplicación. Esto es principalmente para admitir cookies entre sitios y solicitudes CORS. En otras palabras: siempre que su solicitud proceda de una URL reconocida por FB para asociarse con su clave de la aplicación, FB sabe qué usuario está en su sitio, ya que tiene acceso completo a sus propias cookies.
Entonces, ¿qué significa esto para ti al tratar de usar FB para habilitar OAuth tu sitio?
Básicamente, significa que FB se convierte en su sistema de inicio de sesión. Usted está afirmando lo siguiente:
"Mientras FB diga que el usuario es quien dice ser, también confío en él".
Entonces, cuando un usuario llega a su sitio y hace clic en el botón "Iniciar sesión con Facebook", su sitio obtendrá un éxito o una falla. Puede obtener más información acerca de cómo implementar esto, específicamente, mirando el sitio de Desarrolladores de Facebook , y específicamente, las siguientes referencias:
- Facebook Login
- Referencia de API> Iniciar sesión
- El cuadro de diálogo de inicio de sesión
- Fichas de acceso y tipos
- Arquitectura de acceso
Una vez que FB te devuelve un token que indica el éxito, puedes afirmar que la persona a la que le devuelves información a través de la API de FB es la persona que usa tu sitio. Por lo tanto, si almacena su ID de FB en su base de datos como su clave principal, por ejemplo, ahora puede filtrar los resultados de su propia API en función de ese valor.
Un viaje de ida y vuelta puede ser algo así como:
- Usuario no autenticado llega a su sitio
- Redirigir / proporcionar un botón de inicio de sesión para autenticarse con Facebook
- Determine la identidad ahora autenticada del usuario presionando la API de FB Graph
- Su secuencia de comandos de IU ahora envía la ID de FB recibida de Graph junto con sus solicitudes a su capa de API.
- La capa API filtra los datos en función de la ID del FB (asociada a su registro de usuario) y devuelve los datos correctos
Espero que esto sea útil. Si tiene alguna pregunta, por favor pregunte en los comentarios, e intentaré agregar más detalles cuando pueda.