Frage

ich benutze jboss-as-7.1.0.Final-SNAPSHOT und Versuch, ein benutzerdefiniertes Login -Modul einzurichten, das eine Datenbank verwendet. Ich habe die Anweisungen in der AS7-Dokumentation befolgt, um eine neue Sicherheitsdomäne in Standalone.xml, Security-Domain in Jboss-Security.xml und Sicherheitskonstruktion in Web.xml und ich JBoss 'Protokollierung aufzuspüren, damit ich sehen kann Benutzerdefinierte Anmeldemodulmethoden werden erfolgreich aufgerufen (z. B. login (), authenticate ()).

Ich möchte keine manuelle Transaktionsabgrenzung in meinem Anmeldemodul verwenden, daher wäre es großartig, wenn mein Login -Modul EA statend EJB sein könnte.

Einen Blick auf die JBOSS AS7: Sicherheitsdomänenmodell Artikel, der sagt:

Schreiben Sie einfach das FQCN in das Codeattribut und es sollte nicht in der Box funktionieren.

Um die Klassendateien für benutzerdefinierte Login -Modul zu platzieren, können Sie sie in ein Glas platzieren und entweder einsetzen:

Anwendungsklassenpfad Ihres Webarchivs (Krieg) oder EJB -JAR oder Enterprise Archive (OR) oder separates Modul im Modulverzeichnis.

Es sieht so aus, als ob das Himmel die Grenze ist, an der ich mein Login -Modul platzieren kann, einschließlich innerhalb des EJB -Moduls meiner Anwendung. Bedeutet dies, dass mein benutzerdefiniertes Login -Modul ein staatlicher EJB sein kann? Ich habe nichts gelesen, das sagt: "Nein." Wenn ich jedoch mein Login -Modul als statendes EJB -injizierte verwaltete Beans und injizierte EntitätManager bereitete, scheint nicht injiziert zu werden. Ich bekomme nullPointerexception, wenn ich versuche, Methoden auf sie aufzurufen.

Ich habe mir org.jboss.security.auth.spi.databaseServerloginModule angesehen, der als eines der Standard -Anmeldemodule von JBoss bereitgestellt wird. Ich wollte sehen, wie der Datenbankzugriff dort behandelt wird. Datenquelle sucht über initialcontext zB.

InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(dsJndiName);
conn = ds.getConnection();

und Transaktionen werden alle manuell behandelt. Ich möchte diesen Ansatz nach Möglichkeit nicht verwenden.

Kann ich staatlich EJB verwenden? Oder bin ich in meiner Herangehensweise dazu weit weg von der Basis?

War es hilfreich?

Lösung

Die Frage wurde beantwortet JBoss Community folgendermaßen:

  • Das benutzerdefinierte Anmeldemodul kann kein staatlicher EJB sein, da "die jeweiligen Lebenszykle eines Zustands eines staatlichen EJB und eines Anmeldemoduls sehr unterschiedlich sind" und "Anmeldemodule werden erstellt und für die Dauer eines einzelnen Authentifizierungsschritts verwendet und dann zum Müll gesammelt. "

  • Das benutzerdefinierte Login -Modul kann CDI nicht verwenden, sodass man keine verwaltete Bohne injizieren kann. Eine Person sagte, dass es ziemlich cool wäre, wenn JAAS ein Mittel zur Injektion einer verwalteten Bohne darstellt und dass jemand eine Aktualisierung der JAAS -Spezifikation vorschlagen muss. um dies zuzulassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top