Download the PHP package marcel-maqsood/session-auth-middleware without Composer

On this page you can find all versions of the php package marcel-maqsood/session-auth-middleware. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package session-auth-middleware

Mezzio Session Auth Middleware

Die SessionAuthMiddleware (SAM) ist eine PSR-15-Middleware für Laminas/Mezzio-Anwendungen. Sie verbindet Session-basierte Authentifizierung, Login-Routen, Datenbank-gestützte Session-Fingerprints und ein gruppenbasiertes Berechtigungssystem.

SAM prüft nicht nur, ob ein Benutzer angemeldet ist. Sie stellt auch sicher, dass die Session noch gültig ist, dass kein neueres Login auf einem anderen Gerät existiert und dass der angemeldete Benutzer die Permission der aktuell angefragten Route besitzt.

Installation

Das Paket registriert seinen ConfigProvider automatisch über Laminas/Mezzio. Die projektbezogenen Konfigurationen müssen trotzdem in die Anwendung übernommen und angepasst werden.

Was SAM macht

Grundkonfiguration

Die mitgelieferten Dateien in config/ sind als Vorlage für config/autoload/ einer Mezzio-Anwendung gedacht:

Die Datenbankstruktur liegt in db/base.sql. Zusätzlich gibt es ein MySQL-Workbench-Modell unter db/SQL-model.mwb.

Dependencies

SAM benötigt PersistentPDO, den eigenen PDORepository und die Mezzio SessionMiddleware.

Pipeline

Die Mezzio SessionMiddleware muss früh in der Pipeline laufen, bevor SAM oder Login-Handler auf die Session zugreifen.

SAM kann pro Route verwendet werden. Das ist die empfohlene Variante, wenn nur bestimmte Bereiche geschützt werden sollen.

Alternativ kann SAM global in die Pipeline gesetzt werden. Dann müssen öffentliche Routen in no-auth-routes eingetragen werden.

Wichtig: Wenn SAM global gepiped wird, muss sie nach Mezzio\Helper\UrlHelperMiddleware laufen, weil Redirects über den UrlHelper erzeugt werden.

Login-Routen

Login-Routen werden über loginHandling definiert. Der Schlüssel ist der Routename der Login-Route. destination ist die Route, auf die nach erfolgreichem Login weitergeleitet wird. resetDestination ist die Passwort-Reset-Route, die im Login-Template verfügbar gemacht wird.

Beispielrouten:

Der GlobalLoginHandler rendert das Template app::Login. Die mitgelieferte Vorlage liegt unter src/Templating/Login.html.twig.

Bei einem Login:

Logout

Der LogoutHandler entfernt den User aus der Session und leitet auf die Route home weiter. Die Anwendung muss diese Route bereitstellen.

Öffentliche Routen

Wenn SAM global gepiped wird, werden Routen aus no-auth-routes ohne Auth-Prüfung durchgelassen. Das ist besonders für Passwort-Reset-Routen wichtig.

Der Wert wird vom Passwort-Reset-Handler auch als Login-Ziel genutzt, wenn ein Reset-Link ungültig oder abgelaufen ist.

Authentication Config

Die authentication-Config steuert Login-Felder, Repository-Zugriff, Session-Sicherheit, Passwort-Reset und optionale Weitergabe von Daten an Requests.

Konfigurationsfelder:

Hinweis: Die aktuelle SessionAuthMiddleware liest table_override unter authentication.repository.table_override.

Session Config

gc_lifetime ist für SAM besonders wichtig: Der Wert definiert, wie lange der in der Datenbank gespeicherte Session-Zeitstempel gültig bleibt. Läuft diese Zeit ab, wird die Session verworfen und der Benutzer muss sich neu anmelden.

Während aktiver Nutzung aktualisiert SAM den Datenbank-Zeitstempel höchstens einmal pro Minute.

PermissionManager

Der PermissionManager lädt Berechtigungsdaten für den aktuellen Tabellenprefix und prüft anschließend die Route als Permission.

Das Prinzip ist bewusst einfach: Der Routename ist die Permission.

Beispiel: Eine Route mit dem Namen adminDashboard benötigt eine Permission mit dem Wert adminDashboard. Benutzer erhalten Permissions nicht direkt, sondern über Gruppen.

Der PermissionManager kann:

Permission-Fallbacks

Permissions können eine Fallback-Permission referenzieren. Hat ein Benutzer keinen Zugriff auf die angefragte Route und gibt es keinen internen Referer, leitet SAM auf die Fallback-Route um.

Wenn keine Permission zur Route existiert, verwendet der PermissionManager home als Fallback.

Bypass und Wildcard

Eine Permission mit allowBypass = 1 gilt immer als erlaubt. Das ist nützlich für Fallback- oder Basisrouten, die technisch geschützt sind, aber allen angemeldeten Benutzern offenstehen sollen.

Wenn authentication.allowWildcard auf true steht, kann eine Gruppe mit der Permission * Zugriff auf alle in der Datenbank definierten Permissions erhalten.

Tabellenkonfiguration

SAM verwendet Tabellenprefixe. Für den Prefix user werden z. B. diese Config-Keys erwartet:

Für admin entsprechend:

Beispiel für user:

Die Spaltennamen sind frei konfigurierbar, solange die Config die tatsächlichen Datenbankfelder korrekt abbildet.

Message Config

SAM und die Handler lesen Fehlermeldungen aus messages.error. Wenn SAM während einer Auth-Prüfung einen Fehler erkennt, wird der Text für 60 Sekunden als Cookie error gesetzt.

Verwendete Keys:

Im Login-Handler wird das Cookie gelesen, gelöscht und als Template-Variable error an app::Login übergeben.

Passwort-Reset

Der ForgotPasswordHandler unterstützt zwei POST-Aktionen:

Für den Reset werden diese Felder in der Login-Tabelle benötigt:

Die Gültigkeit wird über authentication.passwordResetOffset gesteuert. Standard im Code ist 2592000 Sekunden, also 30 Tage.

Für den Mailversand erwartet der Handler:

Die mitgelieferten Templates liegen unter:

Account-Erstellung

Der CreateAccountHandler verarbeitet POST-Requests und nutzt die Tabellenkonfiguration des aktuell erkannten Auth-Bereichs. Die eigentliche Feldabbildung wird über den AbstractRequestHandler erzeugt.

Fehlschläge werden mit messages.error.user-create-error gemeldet.

Session- und Sicherheitslogik

SAM erzeugt den Session-Fingerprint aus:

Der Hash wird mit authentication.security.algo erzeugt und beim Login in der Datenbank gespeichert. Bei jedem geschützten Request wird der aktuelle Hash mit dem Datenbankwert verglichen.

Wenn ein anderer Login denselben Account verwendet, überschreibt dieser Login den Datenbankhash. Die ältere Session erkennt das beim nächsten Request und wird abgemeldet.

Zugriff auf User und Permissions im Code

Die Middleware hält den PermissionManager statisch vor:

Zusätzlich kann username-forwarding den Benutzernamen als Request-Attribut adminName setzen. Bei Sessions mit gespeichertem Auth-Bereich wird außerdem userPath gesetzt.

Credits

Entwickelt von MazeDEV / Marcel Maqsood.

License

MIT. Siehe LICENSE.md.


All versions of session-auth-middleware with dependencies

PHP Build Version
Package Version
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package marcel-maqsood/session-auth-middleware contains the following files

Loading the files please wait ...