oAuth 2, cuándo sí, cuándo no?

Últimamente me han preguntado mucho sobre cuando es bueno o no usar oAuth2 o simplemente un JWT en Laravel. Vamos a aclarar algunas cosas antes de dar cualquier respuesta.

Cuando nace la pregunta de si debería o no usar oAuth 2 debemos hacernos la siguiente pregunta, estoy construyendo un API para mas de un cliente (entiendase por cliente como sistema que accede al API)? Si la respuesta es si entonces podemos empezar a inclinarnos por oAuth 2, pero si estoy construyendo un API para mi aplicación en Laravel que hace algunas llamadas AJAX al backend probablemente no sea necesario.

Estos son algunos de los criterios que tengo para escoger oAuth2 como método de autenticación:

  • Estoy haciendo un API para una aplicación iOS, Android y un cliente WEB (probablemente mas de uno).
  • El API servirá para que TERCEROS accedan a la información del usuario cuando este los autoriza.
  • Pretendo que el API sea o se convierta en pública. (Twitter API, Facebook API etc.)
  • Pretendo ofrecer a los usuarios de la aplicacion la forma de usar el API para sus propias necesidades. (Forge API, Github API).

Cuando algunos o la mayoria de estos criterios se cumplen es un signo que oAuth2 probablemente sea la mejor opción, pero si no podríamos usar algo mas sencillo.

Sin embargo, Laravel Passport hace tan sencilla la implementacion del oAuth2 server que pensar en si quiera si debo o no usarlo ya me parece una perdida de tiempo, puesto que es muy fácil de configurar y usar. Cuando estabamos en laravel 5.1 o 5.2 que nos tocaba buscar una solucion de terceros para esto si era mas razonable pensar si era o no necesario y siempre estaba JWT (El paquete para Laravel) para salvarnos cuando simplemente no queriamos usar oAuth2 pero con passport (Laravel 5.3+) la historia es diferente. De hecho puedes escribir todo tu API y luego consumirla con VUE en el front de Laravel agregando un Middleware que te da el access token necesario y aun asi puedes compartir el API con el mundo! Algo que fue posible gracias a el trabajo que puso Taylor en Passport.

Para concluir, si estas en laravel 5.3+ definitivamente usa Passport y aprende mas sobre oAuth2, si estas en 5.2 o menor, evalua actualizar o decidir si usar JWT o el server oAuth2 que mostré en el workshop de APIs (https://laraveles.com/series/api-con-dingo-y-oauth2/) basado en tu necesidad. Lo que si es seguro, no dejes de usar autenticacion si la informacion del API es importante, he visto casos donde hay cero autenticacion y se expone información super delicada de las empresas/personas. No seas de ese grupo!

Show your support

Clapping shows how much you appreciated Jose Luis Fonseca’s story.