Ú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.
- OAuth 2 es un RFC (https://tools.ietf.org/html/rfc6749) que pretende estandarizar la forma en que un TERCERO obtiene acceso limitado a un servicio HTTP.
- JWT: es una forma segura de pasar JSON payloads entre sistemas (https://laraveles.com/que-es-en-realidad-jwt/) y su principal pero no único uso es Autenticación.
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 sí 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 aplicación la forma de usar el API para sus propias necesidades. (Forge API, Github API).
Cuando algunos o la mayoría 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 implementación 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 estábamos en Laravel 5.1 o 5.2 que nos tocaba buscar una solución 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 queríamos 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 así 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, evalúa 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 sí es seguro, no dejes de usar autenticación si la información del API es importante, he visto casos donde hay cero autenticación y se expone información super delicada de las empresas/personas. No seas de ese grupo!
Discussion (0)