web-dev-qa-db-fra.com

Laravel Passport vs JWT vs Oauth2 vs Auth0

Confusion sur les types d'authentification API dans Laravel?

J'apprends actuellement à créer une API dans Laravel et je me suis retrouvé dans ces concepts déroutants. Après quelques jours de recherche et de pratique, j'ai finalement pu comprendre suffisamment ces concepts pour en faire un mini -Guide. J'ai dû examiner de nombreuses pages Web distinctes, donc je ferai de mon mieux pour expliquer la relation entre elles.

17
Luis Lopez

Quels sont ces concepts?

  • Passport est un package officiel Laravel qui implémente Oauth2 et JWT.
  • Auth est un service d'authentification et d'autorisation. Il s'agit en quelque sorte d'une solution "tout en un" pour l'authentification API. Il implémente JWT par défaut et peut implémenter Oauth2 ainsi que de nombreux autres protocoles .
  • OAuth2 est un cadre d'autorisation ou un protocole qui permet aux applications (celles que vous allez construire) de donner un accès limité aux comptes d'utilisateurs tels que Facebook, GitHub, etc ... Imaginez que votre application est devenu suffisamment grand pour proposer une "Connexion avec APP NAME HERE" ou fournir un accès limité à votre compte utilisateur à d'autres applications tierces. Avec Oauth2, vous pouvez atteindre cet objectif parmi beaucoup d'autres choses .
  • JWT est un format de jeton. En d'autres termes, c'est la façon dont les données seront organisées pour créer un jeton. Un autre format de jeton serait SWT.

En d'autres termes:

  • Le passeport implémente -> Oauth2 et JWT.
  • Auth0 peut implémenter -> Oauth2 ou de nombreux autres protocoles comme LDAP, OPEN ID, etc ...
  • Oauth2 peut implémenter -> JWT ou d'autres formats de jetons comme SWT ...

Que devez-vous utiliser?

Il serait fou pour un débutant de créer sa propre implémentation Oauth2 compatible avec Laravel. Oauth2 out. Tout ce que nous avons à faire, c'est trois options de package. Passeport , tymondesigns/jwt-auth et Auth .

JWT (tymondesigns/jwt-auth package) est bien pour créer juste une authentification par e-mail et mot de passe. Cependant, si vous utilisez Passport pour une authentification de base par e-mail et mot de passe, vous n'avez pas à vous soucier de voir une "implémentation Oauth2" affecter les performances de votre application (que ce n'est pas beaucoup). La différence survient lorsque toutes ces tables et routes de migration intimidantes sont générées par Passport, mais avec un peu de pratique, vous les comprendrez. Auth0 semble pour être rapide à configurer mais dans certains cas, il peut être trop exagéré en plus de ne pas ressentir la sécurité de travailler avec une communauté Laravel package .

Le vrai match se situe entre Auth0 et Passport. Auth0 est un couteau suisse par rapport à Passport. Vous auriez un très bon tableau de bord tout de suite qui vous permettra de gérer tous les aspects de votre API. De l'authentification tierce pour ajouter plus d'applications (mobile, web, bureau) pouvant consommer cette api. Le passeport pourrait être comparé à un couteau plus délicat. Il a été spécialement conçu pour Laravel et à long terme, vous pouvez implémenter votre propre tableau de bord Nice et personnalisé pour gérer vos clients API.

Conclusion

Je pense que le vrai choix doit être entre Passeport et Auth0. Cela dépend de vous si vous voulez construire une API dans Laravel ou vous serez plus dans le monde de l'API que dans Laravel. Dans mon cas, je préfère Passport qu'Auth0 et à la fin JWT Les raisons sont les suivantes:

  • J'aime travailler avec les packages officiels Laravel.
  • Outre les routes et les tables ajoutées à mon projet, il ne sera pas affecté.
  • Si je commençais avec l'authentification API la plus basique et que je voulais évoluer, ce serait beaucoup plus facile.

Toujours en parlant du dernier point, certains diront que la communauté Auth0 est petite. C'est fondamentalement. Mais il a également un personnel de support client impressionnant.


Tutoriels sur Passport et Oauth2

Les explications de Laravel et Oauth2 Docs sur les jetons peuvent être un peu difficiles. Voici un bonne explication de les différents types de jetons du passeport (donc Oauth2) et leurs cas d'utilisation . Comme je ne pouvais pas comprendre la partie "routes" du tutoriel, je ne recommanderais pas la partie tutoriel.

Ceci est un Good Passport Video Tutorial qui utilise également l'application PostMan Chrome pour les appels d'API. Pour ceux d'entre vous qui sont nouveaux dans ce domaine API, des applications comme PostMan rendre votre travail beaucoup plus facile que d'utiliser une commande "curl" Linux/Mac. Vous pouvez regarder la série complète ou simplement la partie Passport. En ce moment je suis bloqué sur la vidéo 4. Voici mon actuellement non résolu Question de débordement de pile .

Ressources

De nombreuses ressources sont toutes réparties ci-dessus dans l'article, mais j'en ai également quelques-unes ici.

65
Luis Lopez