2012-02-10 25 views
5

Tengo una aplicación web que realiza muchas solicitudes ajax con el servidor php y el servidor de base de datos. También creé una aplicación para iPhone y otra para Android, que hasta ahora funcionaban como aplicaciones sin conexión.OAuth: caso de uso de implementación de OAuth

Ahora quiero crear una API que se utilizará para sincronizar datos entre el servidor web y las aplicaciones de teléfonos inteligentes. ¿Debo usar OAuth para esto? Lo que he leído sobre OAuth parece que se usa si quiero abrir mi API para que la utilicen aplicaciones de terceros. Pero aquí solo quiero asegurar la transferencia segura de datos entre la API y mis propias aplicaciones.

¿Alguien puede arrojar algo de luz sobre esto?

Respuesta

4

El uso principal de OAuth es hacer aplicaciones de terceros autorizadas para acceder a recursos privados de un usuario en un sitio web sin dar credenciales de usuario a la aplicación de terceros. Por ejemplo, supongamos que Twitter quiere obtener la lista de contactos de su cuenta Yahoo. La forma tradicional es dar su nombre de usuario y contraseña al Twitter. Pero con OAuth, se les da un comprobante temporal (llamado Access Token) que autoriza Twitter acceder a sus contactos en Yahoo para una cantidad limitada de tiempo (hasta que este token expire o que, como el dueño de los recursos privados, de forma explícita revocarlo).

Dicho esto, OAuth no se trata de transmitir datos de forma segura en la web. Esa es otra historia que generalmente se logra usando SSL. Incluso cuando usa OAuth, debe usar SSL para asegurarse de que los datos se envían y se reciben de forma segura.

Por lo tanto, en su caso, debe ver para qué se utiliza la API. Si se trata de una API pública que no proporciona datos privados a las personas que llaman, no es necesario utilizar OAuth. Sin embargo, si la API es para acceder a recursos privados de usuarios individuales, puede considerar usar OAuth. Si opta por implementar OAuth, puede permitir que otras aplicaciones de terceros accedan a su API en el futuro sin ninguna preocupación.

0

Bueno, mucho depende de la manera en que proteja su API. ¿Su API está abierta al público, especialmente las urls posteriores? Si sus datos no son algo que todos los usuarios deberían ver, ¿cómo está verificando la autenticación de las credenciales del usuario?

Lo más importante es que debemos evitar compartir el nombre de usuario y la contraseña a través del cable para verificar la autenticación todo el tiempo. Esto significa que su API no debería requerir nombre de usuario y contraseña para validar si el usuario es válido. Lo cual puedes hacer enviando el nombre de usuario y la contraseña desde la identificación del móvil o del dispositivo o alguna otra cosa.

En tal situación, el servidor OAuth viene al rescate. Básicamente, en una URL, un usuario enviará su nombre de usuario y contraseña para obtener su token de acceso. Una vez que se adquiere, podemos usar el token de acceso para validar cada solicitud y tomar las medidas necesarias.

Puede referir los videos donde he implementado el servidor OAuth en Laravel 5 utilizando bshaffer, que es una de las mejores bibliotecas de OAuth para cualquier framework de PHP para el usuario. https://www.youtube.com/watch?v=0vGXbWdtjls