Dieser Artikel basiert auf einer Quellcode-Analyse (Branch
1.x). Eine offizielle Dokumentation gibt es noch nicht; das Paket ist vor dem offiziellen Release (Stand: April 2026).Was ist Sentinel?
Laravel Sentinel ist ein Security-Middleware-Paket, das den Zugriff auf Routen treiberbasiert steuert. Es wird von Taylor Otwell und Mior Muhammad Zaki entwickelt und unterstützt PHP ^8.0 sowie Laravel 8–13. Der Hauptzweck ist der Schutz von Routen der Management-Tools Telescope, Horizon und Pulse. Es genügt,SentinelMiddleware auf eine Route anzuwenden, um den Zugriff über die vom Treiber definierte Autorisierungslogik zu steuern.
Vergleich mit dem bisherigen Vorgehen
Telescope und Horizon boten jeweils eigene Autorisierungsmechanismen übergate.
Installation
composer.json unter extra.laravel.providers der SentinelServiceProvider registriert ist, wird der Service Provider automatisch erkannt. Es muss keine Konfigurationsdatei veröffentlicht werden.
Architektur des Pakets
Verhalten des Standard-Treibers (Laravel-Treiber)
Der Standard-TreiberLaravel steuert nur in der lokalen Umgebung (APP_ENV=local) den Zugriff.
Erkennung privater IPs
Die BasismethodeisPrivateIp() der Klasse Driver erkennt anhand von Symfonys IpUtils folgende Bereiche als private IPs.
| Bereich | Beschreibung |
|---|---|
127.0.0.0/8 | Loopback (RFC1700) |
10.0.0.0/8 | Privat (RFC1918) |
192.168.0.0/16 | Privat (RFC1918) |
172.16.0.0/12 | Privat (RFC1918) |
169.254.0.0/16 | Link-Local (RFC3927) |
::1/128 | IPv6-Loopback |
fc00::/7 | IPv6 Unique Local |
fe80::/10 | IPv6 Link-Local |
Erkennung von Docker-Lokalumgebungen
REMOTE_ADDR auf 127.0.0.1 steht und die Datei .dockerenv im Projekt-Root existiert, wird eine Docker-Lokalumgebung erkannt.
Einsatz als Middleware
Grundlegende Verwendung
Einen Treiber angeben
Sie können den Treibernamen als Argument der Middleware übergeben. Bei einem nicht existierenden Treibernamen wird auf den Default-Treiber zurückgefallen (Verhalten vondriverOrFallback()).
Implementierung der Middleware
authorize() false zurück, wird mit HTTP 401 abgebrochen. Mit Driver::authorizeOrFail() ließe sich stattdessen eine AuthorizationException werfen (die Middleware selbst nutzt dies nicht).
Eigene Treiber erstellen
Durch Erben von der abstraktenDriver-Klasse und Implementierung der Methode authorize() erstellen Sie einen eigenen Treiber.
extend() erfolgt beispielsweise in AppServiceProvider::boot().
Utility-Methoden der Basisklasse nutzen
Die KlasseDriver stellt praktische Methoden wie IP-Prüfungen bereit, die eigene Treiber frei verwenden können.
Funktionsweise des SentinelManager
SentinelManager erbt von Illuminate\Support\Manager. Manager ist Laravels Basisklasse für das Treibermuster; über driver() werden Treiberinstanzen aufgelöst und gecacht.
driverOrFallback() fällt bei nicht gefundenem Treiber still auf den Default-Treiber zurück. Ein nicht existierender Treibername im Middleware-Argument führt daher nicht zu einem Fehler.
SentinelManager wird vom SentinelServiceProvider als Scoped Singleton (scoped) registriert, sodass die Treiber-Instanz innerhalb einer Anfrage wiederverwendet wird.
Fazit
laravel/sentinel ist ein kleines Paket, das dank des Treibermusters auf Basis von Illuminate\Support\Manager hoch erweiterbar ist.
| Aspekt | Inhalt |
|---|---|
| Version | 1.x |
| Unterstütztes PHP | ^8.0 |
| Unterstütztes Laravel | 8–13 |
| Default-Treiber | steuert nur die local-Umgebung |
| Eigene Treiber | über Sentinel::extend() ergänzbar |
Laravel-Treiber ist darauf spezialisiert, in der lokalen Entwicklung Zugriffe über Tunnel-Dienste zu blockieren. Für den Schutz produktiver Umgebungen ist ein eigener Treiber erforderlich. Sobald die offizielle Dokumentation vorliegt, werden konkretere Einsatzmuster deutlicher werden.
Repository laravel/sentinel
Quellcode und aktuelle Änderungen finden Sie im GitHub-Branch
1.x.