Web Session Auth

Eine kleine Anmerkung vorab: wie andere Projekte auch ist dieses eher ein Proof-of-Concept. Es sollte daher nicht in produktiven Umgebungen eingesetzt werden. Vielmehr ist es als Grundlage für andere Projekte mit ähnlicher Zielsetzung zu sehen.

Manchmal müssen gewisse Resourcen, wie z.B. Dokumente oder Bilder, gegen unauthorisierte Zugriffe geschützt werden. Neben tiefer gehendem Schutz reicht es oft aber auch schon, dass der Benutzer eingeloggt ist bzw. auf der Seite eine spezielle Freischaltung bekommen hat.

Hier setzt der Web Session Auth Filter ein: er prüft bei jedem Zugriff die Session auf Vorhandensein eines speziellen Eintrags, den ein anderer Teil der Webseite gesetzt haben kann. Nur bei positiver Prüfung wird der Aufruf durchgelassen.

Projekt-Idee

inhaltl. Voraussetzungen

Ein grundlegendes Verständnis von HTTP Requests, Sessions und Servlet Filter ist notwendig.

techn. Voraussetzungen

Der Servlet Filter setzt Java 7 und einen Applikationsserver mit Servlet API 3 voraus.

Voraussetzungen

Pre Auth

Wenn die Freischaltung nicht direkt durch andere Teile der Applikation erfolgt, kann eine Handler Klasse registriert werden, die vorgeschaltet ausgeführt wird, und gegebenenfalls die Freischaltung vornimmt. Dafür ist das Subprojekt session-auth-preauth-api angelegt, dass die API dieser Pre-Auth-Klasse definiert.

Request Prüfung

Nach dem optionalen Pre-Auth-Aufruf wird dann das Vorhandensein der Freischaltung geprüft. Falls vorhanden, wird die Anfrage durchgelassen. Falls die Freischaltung fehlt, kann entweder das Senden eines HTTP-Fehlercodes oder ein Redirect konfiguriert werden.

Das Projekt
Konfiguration

Wichtige Anmerkungen

Dieser Filter stellt keinen 100%igen Schutz dar, dass keine unbefugten Benutzer auf eine Resource zugreifen können. Vielmehr stellt er die Grundlage für weitere Implementierungen im Rahmen eines Gesamtkonzeptes zur Absicherung einer Web-Applikation dar.

Hinweise

Disclaimer

Sowohl der Quellcode als auch die Informationen in diesem Text sind sorgfältig zusammengestellt und getestet worden. Trotzdem sind Fehler nicht auszuschliessen. In diesem Fall bitte gerne einen Issue auf GitHub zum Projekt erstellen. Danke.

Zusatzinfos
Navigation