Java Authentication and Authorization Service
# Java Authentication and Authorization Service

Java Authentication and Authorization Service (JAAS) ist ein Java-API, welches es ermöglicht, Dienste zur Authentifizierung und Zugriffsrechte in Java-Programmen bereitzustellen. JAAS orientiert sich an den Pluggable Authentication Modules (PAM) und unterstützt dadurch eine benutzerbasierte Autorisierung. JAAS wurde ab der Version 1.3.1 der Java Platform, Standard Edition als Erweiterung ausgeliefert und ist ab der Version 1.4 Teil der Java Platform (sowohl Standard Edition als auch EnterpriseEdition). Die zugehörigen Schnittstellen und Klassen sind im Paket „javax.security.auth“ definiert.

## Funktionsweise

JAAS definiert Standardklassen und ein über mehrere Schnittstellen vorgegebenes Framework, damit ein Java-Programm Anwender über eine verfahrens- und herstellerneutrale Schnittstelle authentisieren kann. Die eigentliche Authentisierungslogik ist in Provider-Module ausgelagert.
Die eigentliche Definition, wie ein JAAS-nutzendes Programm Anwender authentisieren und über welche Authentisierungsdatenquellen dies geschehen soll, wird in einer Java-Properties-Konfigurationsdatei festgelegt. So kann auch nach Fertigstellung eines Programms das verwendete Authentisierungsverfahren geändert werden, ohne den Programmcode modifizieren zu müssen.

## Einsatz

Aufgrund der leicht veränderbaren Konfigurationsdatei und des prinzipiellen Aufbaus eines Java-Programms kann jeder Anwender mit Direktzugriff auf die Class- und Property-Dateien eines JAAS-Programms die verwendeten Provider-Module sehr leicht austauschen und so von einem Programm vorgesehene Sicherheitsbeschränkungen unterlaufen. Deswegen hat sich JAAS bei 2-Schicht-Anwendungen, bei denen die Anwendungslogik auf Endgeräten vom Anwender läuft, bisher kaum durchgesetzt.
Mit Java 1.4 werden folgende Provider Module mitgeliefert: Unix, NT LAN-Manager, Kerberos. Ab Java 6.0 ist zusätzlich ein LDAP-Authentication-Provider enthalten.
Sicher einsetzen lässt sich JAAS bei 3-Schicht-Anwendungen, bei denen die Anwendungslogik auf einen Applikation-Server außerhalb der Reichweite von Anwendern ausgelagert ist. Dort ist JAAS inzwischen auch ein De-facto-Marktstandard für Authentisierung. Dieser Standard wird weiter gefestigt, da alle namhaften Hersteller von Java Application Servern inzwischen grundsätzlich mehrere fertig einsetzbare JAAS-Provider-Module mit ihrem Application Servern mitliefern, mit denen gängige Authentisierungsprotokolle abgedeckt sind (z. B. LDAP, SAML, PKI Zertifikate, SQL-Datenbanken).
Für eine Anbindung an im Unix-Umfeld übliche PAM-Authentisierungsmodule wird ein Bridge-Modul benötigt, für das u. a. freie Implementierungen verfügbar sind.