Laravel Passport

¿Cuáles son los diferentes tipos de autenticación para APIs en Laravel?

Para contestar esta pregunta, lo mejor es empezar definiendo algunos conceptos:

  • JWT es solo un formato para los tokens, es decir, indica cómo se van a estructurar los datos para crear el token. Otro forma
  • Auth0 es un servicio de autenticación y autorización para APIs. Utiliza JWT por defecto, y admite cualquiera de estos protocolos, como por ejemplo OAuth2.
  • OAuth2 es un protocolo de Auth0 que permite a las aplicaciones (las que vas a crear) dar acceso limitado a otras aplicaciones de terceros como Facebook, GitHub, etc., por ejemplo para que los usuarios se puedan registrar en tu aplicación utilizando estos servicos.
  • Passport es un paquete oficial de Laravel que implementa OAuth2 como protocolo y JWT como formato para los tokens.

Entonces, resumiendo, tenemos que:

  • Auth0 puede utilizar OAuth2 o cualquier otro protocolo, como LDAP, OPEN ID...
  • OAuth2 puede utilizar JWT o cualquier otro formato de tokens, como SWT.
  • Passport utiliza OAuth2 y JWT.

¿Qué es lo que deberíamos utilizar?

Sería una locura para un principiante crear su propia implementación de OAuth2 compatible con Laravel, así que la única opción es utilizar uno de los paquetes existentes: Laravel Passport, tymondesigns/jwt-auth y Auth0.

Mi recomendación es que utilices Laravel Passport, por la seguridad que da trabajar con un paquete de la comunidad Laravel. Además, de las tres opciones que tenemos es la que posiblemente mejor se adapte a cualquier proyecto, ya que el paquete jwt-auth suele quedarse pequeño, y Auth0 suele venir demasiado grande.