Security mit Spring oder Seam

B

Bernaldo

Gast
Hallo,
ich setze im Moment eine Web-Anwendung unter Zuhilfenahme von JSF um.
Da es anfangs nur für den Betrieb im Intranet gedacht war, habe ich das Sicherheitsthema ein bisschen vernachlässigt.
Nun kann es sein, dass es eventuell doch auch eine Schnittstelle nach außen geben wird, weshalb ich nun nachholen will, mich hier zu informieren.

Mir geht es allgemein darum, wie sicher ist JSF von sich aus und was muss man wie am besten selbst einbauen.

Ein großes Augenmerk gilt auch einem LogIn-System mit verschiedenen Nutzer spezifischen Rechten (und wohl später auch noch Gruppen).

Leider finde ich auf Anhieb nicht wirklich viele Fakten dazu. Im großen und ganzen findet man wenn man danach googelt hauptsächlich Umsetzungs-Beschreibungen, wie man ein Framework einsetzt. Wieso eins benötigt wird, welche Vorteile es hat und wo die Grenzen der einzelnen Methoden liegen finde ich nur schwerlich (oder vielleicht nutze ich die falschen Suchbegriffe).

In einem Buch zu JSF fand ich einen Satz, bei dem ich gehofft habe, dass nun mehr Informationen genau zu diesem Bereich kommen:
"Die Sicherheit von Unternehmensanwendung ist von hoher Relevanz, so dass die im Java-EE- und EJB-Bereich vorhandenen rudimentären Möglichkeiten häufig nicht ausreichen und explizit Sicherheits-Frameworks zum Einsatz kommen oder individuelle Lösungen realisiert werden."
Wirklich viel mehr steht hier nicht - leider.

Die häufigst genannten Frameworks die für die Authentifikation genannt werden, sind JBoss Seam und Spring Security. Beide Frameworks werden bis jetzt noch nicht im Projekt verwendet.

Leider habe ich niergends Vorteile und Nachteile der Frameworks gefunden oder gar Gegenüberstellungen davon.

Auch weiß ich nicht, was genau gegen eine eigene Lösung spricht, die in einem Phaselistener abfrägt, ob ein Nutzer eingeloggt ist und wenn ja, ob dieser die Rechte hat und dem entsprechend weiter leiten kann.
Nicht das ich dies machen will, suche eher Argumente dagegen.
Was ich bis jetzt gefunden habe ist, dass es Arbeit ist, die man sich von Frameworks abnehmen lassen kann, Rollen-Rechte besser gemanaged werden können und man auch Komponenten eine Option geben kann, die je nach Rechten das Element rendert (und somit das if herum spart).

Mir geht es erstmal nur um Hintergründe, Fakten und Vorteile einzelner Frameworks (bzw. von Spring und JBoss Seam). Die Umsetzung wird später angegangen.

Wäre super, wenn ihr mir hier weiterhelfen könnt und Tipps geben, wo ich dazu am besten gute Informationen finde.

Danke
 
S

Sym

Gast
Wenn Du JSF 2 und einen EE-Server verwendest, würde ich JAAS empfehlen. Damit kannst Du recht viel Out-of-the-box abfackeln. In Zusammenarbeit mit EJB ist das eine schöne Geschichte.

Aber um genauere Tips zu geben, müsstest Du ein wenig mehr über die genutzte Technologie erzählen.
 
B

Bernaldo

Gast
Hallo,
danke für deine Antwort.

Ja das Projekt nutzt JSF 2.0 und läuft auf einem Glassfish-Server (also mit der JSF Implementierung Mojarra). Darüber hinaus werden so gut wie keine Frameworks eingesetzt.
 

Deadalus

Bekanntes Mitglied
Hallo,

ich würde dir sehr empfehlen dir mal Apache Shiro anzuschauen. Das ist wirklich ein sehr einfaches und flexibles Security Framework. Von Spring Security würde ich die Finger lassen, da man immer wieder hört, das es unnötig kompliziert sein soll.
Seam Security (ab der 3.0) ist halt sehr stark an CDI gekoppelt.

Das schöne an Shiro ist, das es komplett unabhängig von der verwendeten Technologie ist, es aber trotzdem sehr einfach und intuitiv zu bedienen ist.

Hier eine kurze Übersicht:
What is Shiro | Apache Shiro

und hier ein 10min Tutorial:
10 Minute Tutorial | Apache Shiro

Noch ein Satz zu JAAS. JASS ist im JEE Umfeld wirklich nett und einfach zu verwenden. Aber furchtbar unflexibel. Wenn du in deiner Anwendung eine feste Anzahl von statischen Rollen hast, deren Zugriffsrechte sich nie ändern können nimm JAAS. Willst du zur Laufzeit dynamisch Rollen hinzufügen und Rechte ändern mach bitte einen großen Bogen darum.
 
Zuletzt bearbeitet:
B

Bernaldo

Gast
Hallo Deadalus,
vielen Dank für die Tipps. Was du geschrieben hast hört sich sehr einleuchtend an.

Nach den Feiertagen werde ich mich mehr damit beschäftigen - vielleicht komm ich dann nochmals mit Fragen hier auf euch zurück :)

Sollte sonst wer Tipps haben, freue mich immer.


Wünsch euch allen ein frohes Fest.
 

JanHH

Top Contributor
Seam 2 löst das hervorragend, ist aber kein kleines zusätzliche einsetzbares Framework sondern ein arg dicker, monolithischer Brocken (aber mit Sicherheit JSF 2.0 ohne sonstige weitere Frameworks weit überlegen). Man setzt ein Projekt entweder als seam2-Projekt auf oder nicht, aber man kann nicht klein und elegant seam für Sicherheit einbinden.

Seam 3 (für JSF 2.0 und JEE6) ist da meines Wissens nach noch ziemlich unzureichend.

Ansonsten ist das Seam2-Prinzip (identiy-Komponente) auch relativ einfach selber nachbaubar, das würde ich wohl machen wenn ich ein JSF 2.0-Projekt ohne seam aufsetzen müsste. Eine Session Scope-"identity"-Komponente, die Namen und Password und Login-Status und Rollen des Users speichert, die man per JSF-EL abfragen kann mit #{identity.loggedIn} und #{identity.hasRole('superDuperAdmin')}. Dann kann man die JSF-Seiten direkt darüber filtern und braucht auch keinen PhaseListener mehr.
 
Zuletzt bearbeitet:
S

Sym

Gast
Ansonsten ist das Seam2-Prinzip (identiy-Komponente) auch relativ einfach selber nachbaubar, das würde ich wohl machen wenn ich ein JSF 2.0-Projekt ohne seam aufsetzen müsste. Eine Session Scope-"identity"-Komponente, die Namen und Password und Login-Status und Rollen des Users speichert, die man per JSF-EL abfragen kann mit #{identity.loggedIn} und #{identity.hasRole('superDuperAdmin')}. Dann kann man die JSF-Seiten direkt darüber filtern und braucht auch keinen PhaseListener mehr.
Das bekommst Du mit JAAS doch alles geschenkt. Denn genau dafür ist es da. :)

Seam 2 würde ich für ein neues Projekt nicht mehr nutzen. Zu alt, zu groß und zu langsam.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6
Dimax Spring Security CSRF-Token Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring Security Probleme Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Buchempfehlung Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 17
iman Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 13
S Spring Security deaktivieren Frameworks - Spring, Play, Blade, Vaadin & Co 10
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Spring tools security mit JSP Frameworks - Spring, Play, Blade, Vaadin & Co 6
K Spring Security für Java SE Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Konfiguration von Spring Security für httpBasic Auth und jdbc Authentication. Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security Token vs. Cookie Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Security mit JBoss oder Spring oder... Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Security URLs erlauben Frameworks - Spring, Play, Blade, Vaadin & Co 0
K JSF 2.1 und Spring 3 Security Login mit RememberMe Frameworks - Spring, Play, Blade, Vaadin & Co 1
F.S.WhiTeY Spring Security Constrain: Allow connection from localhost always Frameworks - Spring, Play, Blade, Vaadin & Co 1
F Spring Security Beans Frameworks - Spring, Play, Blade, Vaadin & Co 7
E Fehlermeldung von Spring Security beim Einloggen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem mit spring security Frameworks - Spring, Play, Blade, Vaadin & Co 0
C JSF 2.0 Spring Security 3 User eingeloggt? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Webanwendung und Spring Security Ratschlag Frameworks - Spring, Play, Blade, Vaadin & Co 6
T JSF - Spring Security Integration Frameworks - Spring, Play, Blade, Vaadin & Co 0
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Security RMI Frameworks - Spring, Play, Blade, Vaadin & Co 2
I Spring Security: Login und danach Methode aufrufen. Nur wie?? Frameworks - Spring, Play, Blade, Vaadin & Co 0
G Spring Security Leerzeichen Frameworks - Spring, Play, Blade, Vaadin & Co 7
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Spring Security - Angemeldet bleiben Frameworks - Spring, Play, Blade, Vaadin & Co 4
G Spring Security Beispielprogramm [DRINGEND] Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Security 3 und JSF 2.0 Frameworks - Spring, Play, Blade, Vaadin & Co 5
G Spring Security Konfiguration Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Security Benutzer ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security mit Datenbank Frameworks - Spring, Play, Blade, Vaadin & Co 5
I Spring Security 404 Fehler bei Login -> Findet Seite nicht Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Eigene Login Funktion bei Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
I Menüsteuerung mit Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 0
ARadauer Spring Security - Setting the SecurityContextHolder Contents Directly Frameworks - Spring, Play, Blade, Vaadin & Co 1
M JSF Navigation - Spring Security Logout Problem Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Security Tutorial ohne Web application Frameworks - Spring, Play, Blade, Vaadin & Co 4
MQue Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7

Ähnliche Java Themen

Neue Themen


Oben