Das Problem hab ich glaub ich verstanden, aber auch keine direkte Lösung. Vielleicht ein, zwei Gedanken, vielleicht auch nochmal mit anderen Worten umschrieben - vielleicht hilfts?!
Wir befinden uns irgendwo in den Weiten eines Servers (Tomcat und Co), ob im JSP oder in einer Java Klasse -egal. Wir können auf die Session und die verschiedenen Contexte zugreifen. Und: wir haben zwei Zeichenketten, eins ist ein Username und eins ein Passwort.
Aus anderen WebApps ist bekannt, daß man sich zB. per PopUp Fenster (das Browsereigene - like htaccess beim Apachen) oder Login Formular am Server anmelden kann. Dieser vergleicht die Userdaten (zB.) anhand der user.xml im tomcat-conf Ordner und sagt dem Tomcat "Hey, das hier ist ein User!"
Die nachfolgende WebApp kann dann den Server nach den entsprechenden Userdaten fragen: ist wer eingeloggt? wenn ja, wie heißt er? usw....
String user = request.getRemoteUser();
boolean inRole = request.IsUserInRole("Admin");
Aus alten Tagen weiß ich noch: Wenn man das Login per Web-Form baut, dann müssen ein paar Bedingungen erfüllt sein: Das Feld für den Usernamen muß "j_username" und für Passwort "j_passord" heißen. Die Action Methode muß an "j_security_check" gehen. Der Servlet Container fängt diese Requests gezielt ab. ( Ob das auch heute noch so ist? )
Wie man diesen Vorgang nun aus einer Klasse heraus initiieren kann, weiß ich leider nicht.
Andere Frage: schreibst Du Deine JSF Anwendung selbst? Wenn ja, dann fragt doch selbst ab, ob es einen User gibt und schreib ihn Dir direkt in die Session und werte in Deinen Klassen aus, ob dort ein User existiert. Vielleicht brauchst Du die "offiziellen" Methoden des Requst-Objects ja gar nicht ...
Vielleicht hilfts ja etwas weiter. Viel Erfolg und viele Grüße
Fats