Standard für Authentifzierung und Autorisierung

Status
Nicht offen für weitere Antworten.

deamon

Bekanntes Mitglied
Hallo,

Welche Schnittstelle zur Ermittlung des aktiven Nutzers und dessen Rollen ist für eine Komponente, die in verschiedensten Serveranwendungen eingesetzt werden soll, am geeignetsten?

Die Authentifizierung kann man sicher gut außerhalb eine Komponente erledigen (durch den Container). Aber die Autorisierung muss schon in die Anwendung eingewoben sein. Die Anwendung muss wissen, wer etwas tut und welche Rechte (Rollen) er hat.

Wenn ich zum Beispiel ein Wiki-Modul entwickle, das in verschiedene Anwendungen eingebunden werden können soll, ist ein einheitlicher Ansatz für die Authentifizierung und Autorisierung erforderlich. Bei einer Wiki-Seite wird der Name des Autors benötigt, um festzuhalten, wer die Änderung gemacht hat und evtl. muss der Nutzer auch eine bestimmte Rolle haben, um die Änderung überhaupt durchführen zu können.

Wenn man sich auf Webanwendungen beschränkt, wäre die Verwendung von
javax.servlet.http.HttpServletRequest.getUserPrincipal() und
javax.servlet.http.HttpServletRequest.isUserInRole(String role)
denkbar. Aber ist das so allgemein akzeptiert, dass man darauf in einer vielfältig einsetzbaren Komponente bauen kann?

Wie ist das Verhältnis diese Methoden zu JAAS? Sehe ich es richtig, dass der Servlet-Container JAAS implementiert, da getUserPrincipal() ein Principal-Objekt liefert, das in der (JAAS?)-Schnittstelle java.security.Principal definiert ist. Aber was ist mit den Rollen? Dafür scheint JAAS nichts zu bieten. Stattdessen wird das in HttpServletRequest geregelt. JAAS enthält dafür "Permissions", die für mich als konkurrierender Ansatz erscheinen.

Wie sieht es mit Spring Security aus? Damit kann man zwar alle möglichen Authentifizierungsverfahren nutzen, aber ist die Autorisierung nicht ein eigener Weg, der nichts mit JAAS oder dem Verfahren von HttpServletRequest zu tun hat? Anders gefragt: basiert Spring Security auf allgemein anerkannten Schnittstellen, die eine damit abgesicherte Softwarekomponente leicht in andere Systeme integrierbar machen?

Gruß
Christian
 

ps

Bekanntes Mitglied
Ich habe mich nach viel lesen und noch mehr Nachdenken für einen eigenen Ansatz zur Authentifizierung & Authorisierung entschieden. JAAS ist IMHO nur dann wirklich sinnvoll wenn sich die Anwendung in eine bereits vorhandene Enterprise-Infrastruktur integrieren muss. Man handelt sich damit auch eine sehr technologiespezifische Abhängigkeit ein.

Letztendlich kam ich zu dem Schluss in meiner anwendung einfach zwei eigene Interfaces zu implementieren: Authorizer und Authenticator. Muss meine Anwendung sich irgendwo einfügen, kann ich die Implementation jederzeit austauschen - und so auch sehr einfach ein JAAS Modul bauen wenn die Anforderung kommt.

Evtl. ist auch http://www.jsecurity.org interessant.
 

deamon

Bekanntes Mitglied
Danke für eure Antworten.

Ich habe noch ein bisschen recherchiert und bin zu folgendem (vorläufigen Ergebnis gekommen):
Es scheint so, als wäre der Standard die Methoden
* getCallerPrincipal bzw. isCallerInRole für EJB und
* getUserPrincipal bzw. isUserInRole für Servlets
zu verwenden.

JAAS steht nach meinen Recherchen etwas daneben und hat in Java EE eher am Rande Bedeutung:
http://today.java.net/pub/a/today/2006/09/14/using-jaas-in-ee-and-soa.html

Spring Security scheint neben JAAS und neben den Mechanismen von Java EE zu stehen.

Wenn man also eine Komponente, die Authentifizierung und Autorisierung benötigt, entwickeln möchte und auf einen breit akzeptierten Standard setzen will, dürfte wohl der Java-EE-Ansatz der beste sein.

Mich würde in diesem Zusammenhang trotzdem eine Einschätzung zur Verbreitung/Akzeptanz/Interoperabilität von Spring Security interessieren. Für mich sieht es im Moment so aus, dass eine Anwendung, die auf Spring Security basiert, sich gut in eine Umgebung einbinden lässt, die ebenfalls darauf basiert. Es ist sozusagen ein eigenes Ökosystem. Oder sehe ich das falsch?

JSecurity gefällt mir übrigens nicht so richtig, weil da Exceptions für ganz normale Zustände (falsches Passwort) missbraucht werden. Keine Ahnung, ob das die einzige Designschwäche ist, aber ich finde das schon ziemlich übel und vermute weitere Sünden.

Gruß
Christian
 

ps

Bekanntes Mitglied
deamon hat gesagt.:
Mich würde in diesem Zusammenhang trotzdem eine Einschätzung zur Verbreitung/Akzeptanz/Interoperabilität von Spring Security interessieren. Für mich sieht es im Moment so aus, dass eine Anwendung, die auf Spring Security basiert, sich gut in eine Umgebung einbinden lässt, die ebenfalls darauf basiert. Es ist sozusagen ein eigenes Ökosystem. Oder sehe ich das falsch?

Das sehe ich ähnlich. Baut man mit Spring, greift man auf Spring Komponenten zurück. Entwickelt man nicht mit Spring, möchte man es vermeiden sich wegen einer einzigen Komponente den ganzen Container aufzuhalsen.
 

byte

Top Contributor
Das einzige was man sich dabei aufhalst, ist Springs DI. Wenn man das nicht will, sollte man einen Bogen um Spring machen. Ansonsten ist Spring aber modular aufgebaut und man nutzt nur die Teile des Frameworks, die einen interessieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A /jsp/RegisterView.jsp(3,5) Invalid standard action Allgemeines EE 6
P EJB3-Standard und dafür geeignetste SQL-Datenbank Allgemeines EE 21
D Neue Versionen für Serveranwendung Allgemeines EE 2
Oneixee5 JSON für Spring Boot Endpunkte erzeugen Allgemeines EE 8
TheWhiteShadow JSF plugins für tomcat webapp Allgemeines EE 0
R Docker für Windows in Microservices-Projekt Allgemeines EE 2
2 Wildfly JPA Konfiguration für mysql Allgemeines EE 0
R RHCSA/RHCE für Software Architect? Allgemeines EE 1
G JSF Datenstruktur für DataTable Allgemeines EE 2
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
G Softwarearchitektur für Batchjobs Allgemeines EE 1
A @Webfilter - für doppelte Anmeldung Allgemeines EE 0
R DotNet für J2EE Programmierer Allgemeines EE 1
I Brauche Anregungen für Mandantensystem: Abspeicherung Allgemeines EE 4
R Welches System das beste für programmierer. Linux oder Windows Allgemeines EE 8
L JSP: Dynamischer Content mit Beans für einen Konfigurator? Allgemeines EE 0
M JAX-RS: Unterschhiedliche Typen für POST und GET Allgemeines EE 1
A Zufallstext für YellowPress Allgemeines EE 5
D Prozess für die Zusammenarbeit Allgemeines EE 7
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
A Ideen für Datenhaltung Allgemeines EE 9
c_sidi90 Gute Bücher/Tutorials für Einstieg in JSP/Servlets Allgemeines EE 3
H Glassfish - Open Source Lizenz für den kommerziellen produktiven Einsatz? Allgemeines EE 2
Evil-Devil Server/Tech-Empfehlung für Web-App? Allgemeines EE 12
M Wegweiser für Projekt einer Katastrophen-Stab-SW gesucht! Allgemeines EE 2
slawaweis CMS Unterbau für eine Web 2.0 Anwendung Allgemeines EE 4
B Frameworks/Technologien für Web-Anwendungen Allgemeines EE 16
P Nur ein User für Web Application Allgemeines EE 11
W Struts Tutorial für EE Noobs? Allgemeines EE 2
H Installer für Tomcat-Anwendung Allgemeines EE 5
D maven für javaEE projekt Allgemeines EE 20
Java.getSkill() Anwendung Beans für Formulare Allgemeines EE 5
T Einstieg JEE: Frage für Frage bis zum Erfolg :-) Allgemeines EE 28
Antoras JSP für MVC geeignet? Allgemeines EE 13
I Für dieses Projekt ausreichend? Allgemeines EE 6
P [Maven2] maven-jaxb2-plugin - Kein absoluter Pfad für "<schemaDirectory> möglich??? Allgemeines EE 2
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
2 JSTL Tags für eine Bean? Allgemeines EE 4
S Weboberfläche für jconsole Allgemeines EE 5
I Klassen werden nicht für Import erkannt eclipse EE Allgemeines EE 2
F Architekturvorschläge für Online-Wörterbuch? Allgemeines EE 5
foobar Client-Jar und JPA-Entities für Remotzugriff Allgemeines EE 12
G Framework für selbsterstellte Formular und Seiten gesucht Allgemeines EE 3
R Sourcen einbinden von J2EE bzw auch für Servlets in Eclipse Allgemeines EE 8
D Liste für dataTable (JSF) manuell füllen Allgemeines EE 2
R Tutorial für J2EE Allgemeines EE 3
F FORM Auth in JBoss für User mit falscher Rolle ? Allgemeines EE 2
M Eclipse GUI für EJB-QL bzw HQL? Allgemeines EE 4
eskimo328 java oder php für Support-Ticketing-System Allgemeines EE 12
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
J Timeout für InitialContext Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
J Encoder für Java String in html format Allgemeines EE 6
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
J Konvertierungs-Fehler: Wert ''{0}'' für Modell ''{1}'' Allgemeines EE 10
flashfactor Gibt es ein Case Management für Java Application Server? Allgemeines EE 6
T Zu blöd für JSTL Allgemeines EE 6
B GlassFish & JAAS - Konfiguration für AppClient Allgemeines EE 1
M Kostenloses JSP Plugin für Eclipse Allgemeines EE 6
flashfactor Gibt es ein Transportsystem für Java EE Allgemeines EE 5
boxi JSF für Anfänger Allgemeines EE 8
F JSF h:outputlink für zurück Allgemeines EE 5
boxi JSF Parameter für die nächste seite übergeben Allgemeines EE 2
W Arbeitsumgebung für JSP-Development einrichten (Eclipse, .) Allgemeines EE 3
F Quiz in JSP - Sessionvariable mitzählen (für richtige Antw.) Allgemeines EE 2
P Basissystem für J2EE App Allgemeines EE 5
P JSP Servlets/ Java Klassen für FTP FileUpload (Bilder) + DB Allgemeines EE 3
W Statistiken für Webseiten? Allgemeines EE 2
E Popup Fenster für fertige JSP Seit? Allgemeines EE 3
G Java EE SDK für Mac OS X? Allgemeines EE 3
K JSP für DB-Verbindung Allgemeines EE 4
H relativer Pfad für stylesheet und Pics Allgemeines EE 5
H Gibt es ein jBoss Tutorial für JSPs ? Für Anfänger ? Allgemeines EE 5
J JSF: Authentifizierung für einen einzigen Fall "umgehen Allgemeines EE 6
H Test Application für Tomcat Allgemeines EE 3
S String escpapen für JavaScript, Datenbank, HTML Allgemeines EE 2
C Tutorial für JSF Allgemeines EE 4
G WEB-INF/classpath funktioniert nicht für Dateien Allgemeines EE 2
G StandAlone & DB im Intranet [Ehem.: Beratung für Einstei Allgemeines EE 8
Phreaker Wo bekomm ich für den JBOSS ne build.xml her? Allgemeines EE 2
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
M image für submit button Allgemeines EE 3
F relativer Pfad in Servlets für Dateien Allgemeines EE 2
H Schnelleinstieg für J2EE Projekt? Allgemeines EE 5
B Besondere Ländereinstellungen für eine TomcatApp Allgemeines EE 2
G Firefox Plugin für HTTP (req&resp) visualisierung? Allgemeines EE 2
ronny "jWic" Projekt: Framework für Webapplikationen Allgemeines EE 8
H JNDI Name für die Queue - Connection Factory in JBoss ändern Allgemeines EE 3
A Dateinamen für OutputStream Allgemeines EE 2
C "Data-holding" Klasse für JSP und ear Allgemeines EE 9
G Kickstart für JSF Allgemeines EE 2
D wysiwyg-editor für velocity? Allgemeines EE 3
J Hilfe. brauche Dokumente für die Diplomarbeit Allgemeines EE 9
A relativer Pfad zim Tomcat-Verzeichnis für FileInputStream Allgemeines EE 3
A Brauche ich J2EE für Beans? Allgemeines EE 9
J Test-Tools für JSP-Files? Allgemeines EE 9
C JSP Editor für Linux Allgemeines EE 3
S gibt es free hosting für jsp??? Allgemeines EE 11
S Wie am besten eine Authentifzierung einbauen? Allgemeines EE 7

Ähnliche Java Themen

Neue Themen


Oben