Files
olla/content/posts/3000-01-01-laravel-authentification.md
2026-02-18 17:26:07 +01:00

15 lines
3.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Laravel autentification : Laravel UI, Jetsream, Fortify, Sanctum, Passport…"
description: "Pourquoi je n'utilise pas le système ou les systèmes d'authentification proposés par Laravel ?"
website: dev
---
Ces dernières années, les différents systèmes d'autentification ont émergé dans l'écosystème Laravel : que des bibliothèques officiellement supportées par le Framework !
Tout a commencé avec Laravel UI qui permettait via `php artisan make:auth` de créer les vues et les contrôleurs pour l'inscription, la connexion, la réinitialisation du mot de passe, etc. Je n'ai jamais utilisé ce système car il était conçu pour Bootstrap, lié à une classe `User` (et je vous rappelle que [votre application n'a pas d'utilisateurs](/posts/2017-07-18-your-app-doesnt-have-users.html)), etc. Vu que le code généré ne contenait que quelques classes et quelques bouts de HTML, il était aussi plus rapide pour moi de réécrire cette partie là afin de la maîtriser de A à Z. Je travaille rarement sur des projets courts, mon principal projet Laravel dure depuis des années et les quelques heures de gagnées en utilisant `php artisan make:auth` auraient été perdues 10 fois durant ces années de maintenance à rechercher comment personnaliser tel ou tel élément.
Ensuite, nous avons eu Passport. Passport implémente le protocole OAuth 2 qui est un protocole extrêmement complexe, inutile dans la plupart des cas. Le protocol OAuth 2 est utile dans un ménage à trois : un visiteur qui veut s'authentifier (moi par exemple), un site qui ne veut pas gérer l'authentification (votre application Laravel) et un site connu où le visiteur a déjà un compte (Facebook). Attention, contrairement à ce que l'on pourrait croire, Passport ne permet pas de gérer la partie connexion avec Facebook (c'est le rôle d'une autre bibliothèque officielle : Socialite), Passport permet de créer le système d'authentification de Facebook. Ce qui, vous y conviendrez, n'est pas très utile. L'OAuth 2 fonctionne bien lorsque vous êtes un site connu mais pour des petites applications, il n'y a pas beaucoup d'intérêt. Je pense que la plupart des développeurs qui utilisent Passport l'utilise de manière détournée en étant le client et le serveur, dans ce cas là l'OAuth 2 ajoute une complexité énorme pour un gain nul.
Avec Laravel 7, nous avons eu Sanctum qui est une version bien plus intéressante que Passport pour gérer ses API (application mobile, SPA…) mais encore trop complexe. Sanctum fonctionne avec des clés API à générer et à stocker en base de données avant de pouvoir les utiliser. Le principal problème c'est que ce système oblige l'utilisateur a générer ses clés sur son compte afin de les utiliser, quelque chose qui n'est pas adapté au commun des mortels. Gitub possède ce système mais c'est un site à destination des développeurs qui connaissent l'utilité d'une clé API et qui peuvent sans problème en créer une pour la renseigner à Composer par exemple.
Avec Laravel 8 nous avons deux nouvelle bibliothèque : Fortify et Jetstream.