JAAS für Menschen


83

Es fällt mir schwer, JAAS zu verstehen. Es scheint alles komplizierter zu sein, als es sein sollte (insbesondere die Sun-Tutorials). Ich benötige ein einfaches Tutorial oder Beispiel zum Implementieren der Sicherheit (Authentifizierung + Autorisierung) in einer Java-Anwendung basierend auf Struts + Spring + Hibernate mit benutzerdefiniertem Benutzer-Repository. Kann mit ACEGI implementiert werden.


Tolle Frage. Großartiger markiger Titel für einen legitimen Dokumentationsfehler.
Guido Anselmi

Beste Fragen und Antworten zu JAAS. Es fiel mir wirklich schwer, damit anzufangen.
Cristiandley

@mattb, ich möchte, wenn möglich, einen Nachtrag machen. Ich glaube, dass meine Antwort zum Verständnis Ihrer Frage beitragen kann. Konzeptionell sagen.
pss1suporte

Antworten:


23

3
Die Linke für Jaasbook ist tot. Es wurde jetzt auf jaasbook.wordpress.com verschoben
Eric B.

@ Martinlark, ich möchte, wenn möglich, einen Nachtrag machen. Ich glaube, dass meine Antwort zum Verständnis Ihrer Antwort beitragen kann. Konzeptionell sagen.
pss1suporte

51

Andere Benutzer haben oben einige sehr nützliche Links bereitgestellt, sodass ich mich nicht mit Links beschäftigen werde. Ich habe in JAAS eine ähnliche Recherche für Webanwendungen durchgeführt und bin auf eine "Mind Roadblock" gestoßen, bis mir endlich klar wurde, dass JAAS ein Framework ist, das sich mit Sicherheit auf einer anderen "Ebene" befasst als Webanwendungen in der Java-Welt. Es wurde entwickelt, um Sicherheitsprobleme in Java SE und nicht in Java EE zu lösen.

JAAS ist ein Sicherheitsframework, das zum Sichern von Dingen auf einer viel niedrigeren Ebene als Webanwendungen entwickelt wurde. Einige Beispiele hierfür sind Code und Ressourcen, die auf JVM-Ebene verfügbar sind. Daher können alle Richtliniendateien auf JVM-Ebene festgelegt werden.

Da Java EE jedoch auf Java SE aufbaut, wurden einige Module von JAAS für die Java EE-Sicherheit wiederverwendet, z. B. LoginModules und Callbacks.

Beachten Sie, dass es neben der Java EE-Sicherheit auch die Spring-Sicherheit (früher bekannt als Acegi) gibt, die ähnlich wie die native Java EE-Sicherheit eine viel höhere "Schicht" beim Problem der Sicherung von Webanwendungen angeht. Es handelt sich um eine separate Sicherheitsimplementierung, die nicht auf der Standard-Java EE-Sicherheit aufbaut, obwohl sie sich in vielerlei Hinsicht ähnlich verhält.

Zusammenfassend lässt sich sagen, dass JAAS nur dann verwendet wird, wenn Sie Ressourcen auf Java SE-Ebene (Klassen, Systemressourcen) sichern möchten, als die gemeinsame Klasse und die gemeinsamen Schnittstellen. Konzentrieren Sie sich einfach auf die Verwendung von Spring Security oder der einfachen alten Java EE-Sicherheit, die beide häufig auftretende Sicherheitsprobleme bei Webanwendungen lösen.


2
Das Java EE 6-Lernprogramm setzt das Verständnis grundlegender Sicherheitskonzepte voraus, sodass ein kleiner Überblick über JAAS nicht schadet.
Jacktrades

Beste Erklärung zu JAAS!
David Hofmann

@isiu, ich möchte, wenn möglich, einen Nachtrag machen. Ich glaube, dass meine Antwort zum Verständnis Ihrer Antwort beitragen kann. Konzeptionell sagen.
pss1suporte

11

javax.security ist imho überkomplizierte API. Infolgedessen gibt es nicht nur Implementierer von LoginModules, sondern die gesamte Authentifizierungs- und Autorisierungs-API, die darüber eine Abstraktionsschicht erstellt, wie Authentifizierungs- und Autorisierungsmanager.

Für den Anfang ist es gut, dies in Ihr Gedächtnis zu drucken .

Zweitens ist imho die einfachste Setup & Go-Bibliothek für JAAS Jboss PicketBox . Hier erfahren Sie, wie Sie die Authentifizierung und Autorisierung über JBossAuthenticationManager und JBossAuthorizationManager durchführen. Einfach über XML oder Anmerkungen konfigurierbar. Sie können damit sowohl Webanwendungen als auch eigenständige Anwendungen verwalten.

Wenn Sie den Autorisierungsteil für die Verwaltung des Repository-Zugriffs in Bezug auf die ACL für Ressourcen benötigen, ist dies genau das, wonach Sie suchen.

Das Problem mit der Sicherheit besteht darin, dass Sie sie normalerweise an Ihre Bedürfnisse anpassen müssen, damit Sie möglicherweise Folgendes implementieren:

LoginModule - überprüft Benutzername + Passwort

CallbackHandler wird so verwendetnew LoginContext("Sample", new MyCallbackHandler());

CallbackHandler wird an die zugrunde liegenden LoginModules übergeben, damit diese mit Benutzern kommunizieren und interagieren können. Beispielsweise werden sie über eine grafische Benutzeroberfläche zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert. Innerhalb des Handlers erhalten Sie den Benutzernamen und das Passwort vom Benutzer und es wird an das LoginModule übergeben.

LoginContext - dann rufen Sie einfach lc.login () auf; und authentifizieren Sie die Anmeldeinformationen. LoginContext wird mit dem authentifizierten Betreff gefüllt.

Jboss Streikposten bietet Ihnen jedoch einen wirklich einfachen Weg, es sei denn, Sie benötigen etwas Bestimmtes.


8

lsius Antwort ist eine der wenigen Antworten hier, die es wirklich "verstehen";)

Zusätzlich zu dieser Antwort ist eine wirklich gute Referenz zu diesem Thema Was ist mit JAAS passiert?.

Es wird erläutert, wie JASPIC in Java EE die Verbindung zwischen dem Servlet- und dem EJB-Sicherheitsmodell und möglicherweise einem JAAS-Anmeldemodul darstellt. In vielen Fällen wird die Rolle von JAAS jedoch auf die eines relativ einfachen Benutzernamens und Rollenanbieters in Java EE reduziert.

Vom selben Autor stammt JAAS in the Enterprise , ein älterer Artikel, der jedoch viele historische Hintergrundinformationen darüber liefert, warum die Modelle Java SE (JAAS) und Java EE so unterschiedlich waren wie sie.

Insgesamt aber ein paar Typen von JAAS sind in Java EE direkt verwendet, im Grunde Principal, Subjectund CallbackHandler. Die beiden letzteren werden hauptsächlich von JASPIC verwendet. Ich habe JASPIC im Artikel Implementieren der Containerauthentifizierung in Java EE mit JASPIC erläutert .



1

Für eine rein JAAS Besuche Tutorial dies . Es ist alt, sollte aber bei den JAAS-Grundlagen helfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.