Softwareentwicklung

Wie funktioniert Spring Security in Software-Projekten?

Der TECH TALK von Jürgen Fast widmet sich Authentifizierung und Zugriffsrechten bei Spring Security

TECH TALK zu Spring Security mit Jürgen Fast

Spring Security ist eine zeitgenössische Technologie zur Authentifizierung und Autorisierung von Nutzern einer Webanwendung. Software-Entwickler Jürgen Fast gibt in seinem TECH TALK einen Einblick, wie beides funktioniert.

Was ist Spring Security?

Spring Security ist ein Java/Java-EE-Framework, das Authentifizierungsprozesse, Zugriffsrechte und andere IT-Security-Maßnahmen bietet.

Das Projekt wurde 2003 zunächst unter dem Namen Acegi Security von Ben Alex gestartet und ist erstmals 2004 unter der Apache-Lizenz veröffentlicht worden. In der Folge wurde es in das Spring-Portfolio integriert und unter dem Namen Spring Security zu einem offiziellen Spring-Projekt. Das erste öffentliche Release erfolgte April 2008 unter dem neuen Namen Spring Security 2.0.0

Authentifizierung mit Spring Security

Der Authentifizierungsmechanismus von Spring Security basiert auf verschiedenen Filtern und deren Interaktion untereinander. Wenn ein Nutzer seine Authentifizierung über einen Browser Request anstößt, mündet dieser so entweder in der erfolgreichen Anmeldung oder in einem HTTP-403-Error.

Das läuft schematisch wir folgt ab:

Ein Authentification Request Object wird erstellt und an den Authentification Manager gesendet. Dieser schleust den Request durch eine Kette von so genannten Authentification Providern. Jeder dieser Authentification Provider beantragt dann beim so genannten User Details Service ein entsprechendes User Details Object.

Wenn der Authentification Mechanism anschließend ein vollständig ausgefülltes Authentification Object zurück erhält, war der Authentifizierungsprozess erfolgreich, die Authentifizierung wird in den Security Context Holder gespeichert und der originale Request neu angestoßen.

Wenn der Authentification Provider den Request hingegen ablehnt, fordert der Authentification Mechanism den betreffenden Nutzer zu einem neuen Versuch auf. Was dann folgt: Der Abstract Security Interceptor autorisiert den erneuten Versuch, wirft Java Exceptions und fragt den Access Decision Manager nach einer Entscheidung. Dazu übersetzt der Exception Translation Filter die Java Exceptions in HTTP-relevante Errors.

Authentification Features von Spring Security

  • LDAP: Genutzt werden sowohl BIND-basierte und Passwort-Vergleich-Strategien
  • Single-sign-on, namentlich der Central Authentification Service
  • Java Authentification and Authorization Service (JAAS) , ein Standard-Login-Modul innerhalb von Java
  • Basic Access Authentication wie im IETF Request for Comments 1945 Standard definiert
  • Digest Access Authentication wie im IEFT Request for Comments 2617 und RFC 2069 definiert
  • X.509 Client Certificate, präsentiert via Secure Sockets Layer Standard
  • CA SiteMinder zur Authentifizierung
  • SU (Unix) zum Switchen der Nutzeridentität über eine HTTP- oder HTTPS-Verbindung
  • Run-As Authentification Replacement, welches einer Operation erlaubt, eine andere Security Identity anzunehmen
  • Container Adapter, unterstützt Apache Tomcat, Resin, JBoss und Jetty
  • Windows NTLM zur Browser-Integration
  • Web Form Authentification, also HTTP- und HTML-formularbasierten Authentifizierung
  • „Remember-me“-Support via HTTP Cookies
  • Concurrent Session Support, was die Anzahl der zeitgleichen Logins pro Nutzer limitiert
  • Volle Anpassbarkeit an individuelle Authentifizierungsverfahren beim Kunden

Authorization Features von Spring Security

  • AspectJ: Aspektorientierte Java-Erweiterung , hier genutzt die Methode zum Aufruf von Zugriffsrechten
  • HTTP Authorization für Web Request URLs

Wie wird Spring Security implementiert?

Als Software-Entwickler mit großer Sensibilität gegenüber IT-Security-Aspekten interessieren wir uns natürlich dafür, wie wir Spring Security in unseren eigenen Software-Projekten anwenden können.

Unser Software-Entwickler Jürgen Fast hat dazu schon einmal auf Micromata Labs ein Tutorial veröffentlich, das er nach und nach mit weiteren Kapiteln verfeinert und ausbaut. Erfahren Sie mehr zum Spring-Security-Tutorial.

Als Ergänzung dazu gibt es jetzt auf Micromata TV auch einen TECH TALK zu Spring Security. Schritt für Schritt führt uns Jürgen hier durch die wesentlichen Schritte zur Implementierung von Spring Security (siehe oben). Außerdem gibt es hier das technische Abstract zum TECH TALK.

Erfahren Sie mehr über das Tutorial zu Spring Security von Jürgen Fast. Oder rufen Sie das Tutorial hier direkt auf.

(jw)

Jürgen Fast

Jürgen Fast

Softwareentwickler