Java EE 6 Security: Java-Enterprise-Applikationen einfach und komfortabel absichern

Easy meets comfy

Bernhard Löwenstein


ArtikelserieTeil 1: Java SE 7 SecurityTeil 2: Java EE 6 SecurityTeil 3: Java EE 6 Security (Fortsetzung)Teil 4: Web Services Security

Nachdem wir uns im ersten Teil dieser vierteiligen Artikelserie zum Thema Java & Security mit der Java Standart Edition 7 (Java SE 7) beschäftigten, rückt im zweiten und dritten Teil die Java Enterprise Edition 6 (Java EE 6) in das Zentrum unserer Betrachtungen. Wir werden uns dieses Mal in Anlehnung an [1] die theoretischen Grundlagen anschauen. Im nächsten Artikel folgt zwecks Vertiefung ein Gesamtbeispiel, durch das sich hoffentlich alle noch offenen Fragen klären werden.

Einführung in Java EE 6 Security

Java-Enterprise-Applikationen setzen sich üblicherweise aus unterschiedlichen Komponenten zusammen, die innerhalb verschiedener Container ausgeführt werden (Abb. 1). Derartige Container repräsentieren die Laufzeitumgebung für die Komponenten und stellen ihnen die grundlegenden Dienste bereit. Dazu zählen auch die sicherheitsbezogenen Funktionalitäten. Die Hauptaufgaben der Container in Sachen Sicherheit bestehen darin, die Benutzer zu authentifizieren und nur autorisierten Benutzern den Zugriff auf die Applikationsfunktionen und deren Daten zu erlauben. Zur komfortablen Gewährleistung dieser Punkte unterstützen die Container zwei unterschiedliche Paradigmen, derer sich der Entwickler bei der Programmierung bedienen kann: einerseits die deklarative Sicherheit und andererseits die programmatische Sicherheit.

Abb. 1: Der Java-EE-Server baut auf verschiedenen Containern auf [2]

Bei der deklarativen Sicherheit definiert der Programmierer die sicherheitsrelevanten Anforderungen mittels Annotationen direkt in der zugehörigen Klasse. Allerdings lassen sich auf diese Weise nicht alle Informationen festlegen. Die klassenübergreifenden Definitionen muss er im zugehörigen Deployment Descriptor notieren. Bei Webkomponenten kommen sie in die Datei WEB-INF/web.xml, bei Enterprise JavaBeans (EJBs) werden sie in der Datei META-INF/ejb-jar.xml notiert. Manchmal reicht die deklarative Sicherheit aber nicht aus. Will der Programmierer beispielsweise innerhalb einer Methode eine Entscheidung abhängig von der Rolle des aufrufenden Benutzers treffen, so muss er auf die programmatische Sicherheit zurückgreifen. Über HttpServletRequest (in Verbindung mit Webkomponenten) und EJBContext (in Verbindung mit EJBs) kann er hierbei einfach und komfortabel auf die von diesen Interfaces bereitgestellten sicherheitsspezifischen Methoden zugreifen.

Las...

Java EE 6 Security: Java-Enterprise-Applikationen einfach und komfortabel absichern

Easy meets comfy

Bernhard Löwenstein


ArtikelserieTeil 1: Java SE 7 SecurityTeil 2: Java EE 6 SecurityTeil 3: Java EE 6 Security (Fortsetzung)Teil 4: Web Services Security

Nachdem wir uns im ersten Teil dieser vierteiligen Artikelserie zum Thema Java & Security mit der Java Standart Edition 7 (Java SE 7) beschäftigten, rückt im zweiten und dritten Teil die Java Enterprise Edition 6 (Java EE 6) in das Zentrum unserer Betrachtungen. Wir werden uns dieses Mal in Anlehnung an [1] die theoretischen Grundlagen anschauen. Im nächsten Artikel folgt zwecks Vertiefung ein Gesamtbeispiel, durch das sich hoffentlich alle noch offenen Fragen klären werden.

Einführung in Java EE 6 Security

Java-Enterprise-Applikationen setzen sich üblicherweise aus unterschiedlichen Komponenten zusammen, die innerhalb verschiedener Container ausgeführt werden (Abb. 1). Derartige Container repräsentieren die Laufzeitumgebung für die Komponenten und stellen ihnen die grundlegenden Dienste bereit. Dazu zählen auch die sicherheitsbezogenen Funktionalitäten. Die Hauptaufgaben der Container in Sachen Sicherheit bestehen darin, die Benutzer zu authentifizieren und nur autorisierten Benutzern den Zugriff auf die Applikationsfunktionen und deren Daten zu erlauben. Zur komfortablen Gewährleistung dieser Punkte unterstützen die Container zwei unterschiedliche Paradigmen, derer sich der Entwickler bei der Programmierung bedienen kann: einerseits die deklarative Sicherheit und andererseits die programmatische Sicherheit.

Abb. 1: Der Java-EE-Server baut auf verschiedenen Containern auf [2]

Bei der deklarativen Sicherheit definiert der Programmierer die sicherheitsrelevanten Anforderungen mittels Annotationen direkt in der zugehörigen Klasse. Allerdings lassen sich auf diese Weise nicht alle Informationen festlegen. Die klassenübergreifenden Definitionen muss er im zugehörigen Deployment Descriptor notieren. Bei Webkomponenten kommen sie in die Datei WEB-INF/web.xml, bei Enterprise JavaBeans (EJBs) werden sie in der Datei META-INF/ejb-jar.xml notiert. Manchmal reicht die deklarative Sicherheit aber nicht aus. Will der Programmierer beispielsweise innerhalb einer Methode eine Entscheidung abhängig von der Rolle des aufrufenden Benutzers treffen, so muss er auf die programmatische Sicherheit zurückgreifen. Über HttpServletRequest (in Verbindung mit Webkomponenten) und EJBContext (in Verbindung mit EJBs) kann er hierbei einfach und komfortabel auf die von diesen Interfaces bereitgestellten sicherheitsspezifischen Methoden zugreifen.

Las...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang