Struts: Frage zu JAAS Subject

gulps

Grünschnabel
Hallo,

ich habe ein Verständnisproblem. Ich habe ein LoginModule, 2 Principals (user, role),einen Callbackhandler und ein LoginForm geschrieben.
Logincontext.login() funktioniert und
loginContext.getSubject() liefert ein korrektes Subject.

Mein Problem: Wie geht es weiter?

Ich habe jetzt in meiner Struts Anwendung eine Action mit dem roles Attribut geschützt, dieser Schutz funktioniert. Nur ist mir jetzt nicht klar, woher Jaas/Struts das Subject hernimmt. Ich habe es in die HttpSession geschrieben, aber das scheint nicht auszureichen. Was muss noch getan werden, damit er meine korrekte Autentifizierung erkennt?

Vielen Dank für eure Hilfe

Thomas
 
Das Tutorial kenne ich natürlich, dort wird aber ein anderer Weg eingeschlagen. Es wird die Action Klasse überschrieben und "händisch" kontrolliert. ich wollte, das es ausreicht, dem action Tag in der struts-config ein roles Attribut zu spendieren und den Rest Tomcat zu überlassen.

Die Konfiguration reiche ich nach, prinzipiell bin ich wie unter http://www.mored.com beschrieben vorgegangen, (eigenes LoginModule, 2 Principals Klassen 1 CallbackHandler) + Login.jsp, welche das Subject in die HttpSession schreibt, das ganze ziemlich trivial (hart codiert admin:admin).

Dann, neuer Real im die server.xml und neuer Eintrag in die java.security:
login.config.url.1=file:/jakarta-tomcat-5.0.28/conf/meinjaas.conf

Ich schreib das mal zusammen und poste es hier.

Danke erstmal

Grüsse

Thomas
 
Unter folgender Url findet ihr was ich gemacht habe:
http://www.thomas-klinkert.info/JAAS_Struts_Mitschnitt.html


Mein Problem konnte ich bisher noch nicht lösen. Ich benutze JAASRealm, konnte mich erfolgreich anmelden, habe ein korrektes Subject, schreibe dieses in die HttpSession. Wie kann ich Tomcat dazu bewegen, die geschützten Actions aus der struts-config auszuführen?

Vielen Dank & Grüsse

Thomas
 
Hallo!

ich habe mal ähnliches Problem gehabt. Die Lösung war -
mit dem JAAS-Subject eine PrivilegedAction (selber schreiben) ausführen. So etwa:

javax.security.auth.Subject subject = loginContext.getSubject();
TokenPrivilegedAction tokenPrivilegedAction = new TokenPrivilegedAction();
com.ibm.websphere.security.auth.WSSubject.doAs(subject, tokenPrivilegedAction);
ltpaToken = tokenPrivilegedAction.getLtpaToken();
. . .

public class TokenPrivilegedAction implements PrivilegedAction{
. . .



Nur so bekam ich mein Token. Es geht zwar um WebServices, aber vielleicht wird es Dir weiterhelfen.
 

Neue Beiträge

Zurück