Cet article s’appuie sur une analyse du code source (branche
1.x). Aucune documentation officielle n’existe encore et le package est en pré-release (à la date d’avril 2026).Qu’est-ce que Sentinel ?
Laravel Sentinel est un package de middleware de sécurité qui contrôle l’accès aux routes via un pattern de drivers. Développé par Taylor Otwell et Mior Muhammad Zaki, il est compatible PHP ^8.0 et Laravel 8 à 13. Son usage principal est la protection des routes d’outils d’administration comme Telescope, Horizon ou Pulse. Il suffit d’appliquerSentinelMiddleware à une route pour contrôler l’accès selon la logique d’autorisation définie par le driver.
Comparaison avec l’approche classique
Telescope et Horizon disposent chacun d’un mécanisme d’autorisation basé sur desgate.
Installation
SentinelServiceProvider est déclaré dans extra.laravel.providers du composer.json, il est donc détecté automatiquement. Aucun fichier de configuration à publier.
Architecture du package
Fonctionnement du driver par défaut (driver Laravel)
Le driver par défautLaravel ne contrôle l’accès qu’en environnement local (APP_ENV=local).
Détection d’IP privée
La méthodeisPrivateIp() de la classe de base Driver utilise IpUtils de Symfony pour identifier les IP dans les plages suivantes comme privées.
| Plage | Description |
|---|---|
127.0.0.0/8 | Loopback (RFC1700) |
10.0.0.0/8 | Privée (RFC1918) |
192.168.0.0/16 | Privée (RFC1918) |
172.16.0.0/12 | Privée (RFC1918) |
169.254.0.0/16 | Link-local (RFC3927) |
::1/128 | Loopback IPv6 |
fc00::/7 | Unique-local IPv6 |
fe80::/10 | Link-local IPv6 |
Détection d’environnement Docker local
REMOTE_ADDR vaut 127.0.0.1 et qu’un fichier .dockerenv existe à la racine du projet.
Utilisation comme middleware
Utilisation de base
Spécifier un driver
Passez le nom du driver en argument du middleware. Si le driver n’existe pas, un fallback vers le driver par défaut est effectué (comportement dedriverOrFallback()).
Implémentation du middleware
authorize() retourne false, la requête est interrompue avec un HTTP 401. Driver::authorizeOrFail() permet également de lever une AuthorizationException (non utilisée par le middleware lui-même).
Créer un driver personnalisé
Étendez la classe abstraiteDriver et implémentez la méthode authorize().
AppServiceProvider::boot() ou équivalent.
Utiliser les méthodes utilitaires de la classe de base
La classeDriver propose des méthodes utiles (détection d’IP, etc.) réutilisables librement.
Fonctionnement de SentinelManager
SentinelManager étend Illuminate\Support\Manager. Manager est la classe de base Laravel qui implémente le pattern de drivers en résolvant l’instance via driver() avec mise en cache.
driverOrFallback() retombe silencieusement sur le driver par défaut si le driver spécifié n’est pas trouvé, ce qui permet de passer sans erreur un nom de driver inexistant en argument du middleware.
SentinelManager est enregistré en singleton scopé (scoped) par SentinelServiceProvider : l’instance du driver est réutilisée durant une requête.
Conclusion
laravel/sentinel est un petit package, mais son utilisation de Illuminate\Support\Manager lui confère une bonne extensibilité.
| Élément | Contenu |
|---|---|
| Version | 1.x |
| PHP pris en charge | ^8.0 |
| Laravel pris en charge | 8 à 13 |
| Driver par défaut | Contrôle uniquement en environnement local |
| Driver personnalisé | Ajoutable via Sentinel::extend() |
Laravel est spécialisé dans la prévention des accès via un service de tunneling en développement local ; pour protéger la production, il faut écrire un driver personnalisé. La documentation officielle, à venir, précisera les patrons d’utilisation.
Dépôt laravel/sentinel
Retrouvez le code source et les changements récents sur la branche
1.x du dépôt GitHub.