2009-03-09 22 views
74

Ich habe es schwer, JAAS zu verstehen. Es scheint alles komplizierter als es sein sollte (besonders die Sun Tutorials). Ich brauche ein einfaches Tutorial oder ein Beispiel zur Implementierung von Sicherheit (Authentifizierung + Autorisierung) in Java-Anwendung basierend auf Struts + Spring + Hibernate mit benutzerdefinierten Benutzer-Repository. Kann mit ACEGI implementiert werden.JAAS für Menschen

+0

Ehrfürchtige Frage. Großartiger Titel für einen berechtigten Dokumentationsfehler. –

+0

Beste Fragen und Antworten zu JAAS. Ich habe es wirklich schwer gemacht, damit anzufangen. – cristiandley

+0

@mattb, ich würde gerne einen Nachtrag machen, wenn möglich. Ich glaube, dass [meine Antwort] (http://stackoverflow.com/a/43220700/3542189) beim Verstehen Ihrer Frage helfen kann. Begrifflich sagen. – pss1suporte

Antwort

22
+1

danke :) jaas Buch ist wirklich gut – Makky

+3

Der Linke für jaasbook ist tot. Es wurde jetzt nach https://jaasbook.wordpress.com/ verschoben. –

+0

@Martlark, ich würde gerne ein Addendum machen, wenn möglich. Ich glaube, dass [meine Antwort] (http://stackoverflow.com/a/43220700/3542189) kann helfen, Ihre Antwort zu verstehen. Begrifflich sagen. – pss1suporte

1

Für eine rein JAAS Tutorial überprüfen this aus. Es ist alt, aber sollte mit den JAAS Grundlagen helfen.

2

ich viel zu JAAS auch nicht sprechen kann sich, aber das "suggested steps" guide auf Spring Security und the reference manual sind beide ziemlich gute Ressourcen auf Spring Security - wenn Ihr Setup alles in der Nähe ist einfach, Sie nicht wirklich muss viel mehr tun als diese zu lesen.

+0

Der Leitfaden "vorgeschlagene Schritte" wurde hierher verschoben: http://static.springsource.org/spring-security/site/start-here.html – aliopi

+0

danke, aktualisiert den Link –

49

Andere Benutzer haben oben einige sehr nützliche Links zur Verfügung gestellt, so dass ich mich nicht um Links kümmern werde. Ich habe eine ähnliche Recherche in JAAS für Web-Anwendungen durchgeführt und bin in einen "Mind-Roadblock" geraten, bis ich schließlich feststelle, dass JAAS ein Framework ist, das Sicherheit auf einer anderen "Schicht" anwendet als Web-Anwendungen in der Java-Welt. Es wurde entwickelt, um Sicherheitsprobleme in Java SE und nicht in Java EE anzugehen.

JAAS ist eine Framework Sicherheit gebaut für Dinge auf einem viel niedrigeren Niveau dann Web-Anwendung zu sichern. Einige Beispiele für diese Dinge sind Code und Ressourcen, die auf JVM-Ebene verfügbar sind, also all diese Möglichkeiten, Richtliniendateien auf JVM-Ebene festzulegen.

Da jedoch Java EE auf der Java SE, einige Module von JAAS wurden in Java EE Sicherheit wie die LoginModules und Rückrufe wiederverwendet gebaut wird.

Beachten Sie, dass zusätzlich zur Java EE-Sicherheit auch Spring Security (ehemals Acegi) vorhanden ist, die ähnlich wie die systemeigene Java EE-Sicherheit eine viel höhere "Schicht" beim Sichern von Webanwendungsproblemen anwendet. Es ist eine separate Sicherheitsimplementierung und basiert nicht auf der standardmäßigen Java EE-Sicherheit, obwohl es sich in vielerlei Hinsicht ähnlich verhält.

Zusammengefasst, es sei denn, Sie suchen Ressourcen auf der Java SE-Ebene (Klassen, Systemressourcen) zu sichern, sehe ich keine echte Verwendung von JAAS anders als die Verwendung der gemeinsamen Klasse und Schnittstellen. Konzentrieren Sie sich einfach auf die Verwendung von Spring Security oder der einfachen alten Java EE-Sicherheit, die beide eine Menge gängiger Probleme mit der Webanwendungssicherheit lösen.

+2

Java EE 6 Tutorial übernimmt Verständnis grundlegende Sicherheitskonzepte, so dass ein wenig Überblick über JAAS wird nicht schaden. – jacktrades

+0

Beste Erklärung auf JAAS überhaupt! –

+0

@isiu, ich würde gerne einen Nachtrag machen, wenn möglich. Ich glaube, dass [meine Antwort] (http://stackoverflow.com/a/43220700/3542189) kann helfen, Ihre Antwort zu verstehen. Begrifflich sagen. – pss1suporte

11

javax.security ist imho überkomplizierte API. Daher gibt es nicht nur Implementierungsmodule von LoginModules, sondern auch die gesamte Authentifizierungs- und Autorisierungs-API, die Abstraktionsschicht oben erzeugt, wie Authentifizierung & Autorisierungsmanager.

Für den Anfang ist es gut, this in Ihren Speicher zu drucken.

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

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

Problem mit der Sicherheit, die Sie benötigen in der Regel an Ihre Bedürfnisse anpassen, so dass Sie die Umsetzung bis Ende Mai:

Loginmodule - prüft Benutzername + Passwort

Callbackhandler verwendet wird, wie Diese new LoginContext("Sample", new MyCallbackHandler());

CallbackHandler wird an die zugrunde liegenden LoginModule weitergegeben, damit sie mit den Benutzern kommunizieren und interagieren können - Aufforderung zur Eingabe eines Benutzernamens und Passworts über eine grafische Benutzerschnittstelle zum Beispiel. Innerhalb des Handlers erhalten Sie den Benutzernamen und das Passwort vom Benutzer und es wird an das LoginModul übergeben.

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

Allerdings bietet Jboss Picketbox Ihnen einen wirklich einfachen Weg zu gehen, es sei denn, Sie brauchen etwas Bestimmtes.

7

lsiu Antwort ist eine der wenigen Antworten hier, die „get it“ wirklich;)

Zusätzlich zu dieser Antwort, eine wirklich gute Referenz zu diesem Thema Whatever Happened to JAAS? ist.

Es wird erläutert, wie JASPIC der Link in Java EE zwischen den Servlet- und EJB-Sicherheitsmodellen und möglicherweise einem JAAS-Anmeldemodul ist. In vielen Fällen reduziert sich die Rolle von JAAS jedoch auf einen relativ einfachen Benutzernamen und Rollenanbieter in Java EE.

Aus dem gleichen Autor ist JAAS in the Enterprise, die ein älterer Artikel ist, bietet aber eine Menge historischer Hintergrund, warum die Java SE (JAAS) und Java EE-Modelle die Art und Weise, wie sie auseinander gingen.

Insgesamt werden jedoch einige Typen von JAAS direkt in Java EE verwendet, im Wesentlichen Principal, Subject und CallbackHandler. Die letzteren beiden werden hauptsächlich von JASPIC verwendet. Ich habe JASPIC im Artikel Implementing container authentication in Java EE with JASPIC erklärt.