Skip to main content
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 über gate.
Dieser Weg hängt vom Authentifizierungsstatus des Nutzers ab: „ohne Login lässt sich nicht entscheiden”. Sentinel arbeitet als Middleware und steuert den Zugriff pro Anfrage – unabhängig davon, ob der Nutzer authentifiziert ist. Zudem lassen sich Regeln für mehrere Management-Tools an einer Stelle definieren.

Installation

Da in 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-Treiber Laravel steuert nur in der lokalen Umgebung (APP_ENV=local) den Zugriff.
Zusammenfassung des Ablaufs:
Der Laravel-Treiber gibt außerhalb der local-Umgebung immer true (erlauben) zurück. Für Zugriffssteuerung in der Produktion erstellen Sie einen eigenen Treiber.

Erkennung privater IPs

Die Basismethode isPrivateIp() der Klasse Driver erkennt anhand von Symfonys IpUtils folgende Bereiche als private IPs.

Erkennung von Docker-Lokalumgebungen

Wenn 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 von driverOrFallback()).

Implementierung der Middleware

Gibt 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 abstrakten Driver-Klasse und Implementierung der Methode authorize() erstellen Sie einen eigenen Treiber.
Die Registrierung von extend() erfolgt beispielsweise in AppServiceProvider::boot().

Utility-Methoden der Basisklasse nutzen

Die Klasse Driver 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. Der Standard-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.
Zuletzt geändert am 13. Juli 2026