Ich beginne eine Anwendung, die eine REST-API verwendet, die Aufrufe einer EJB-Schicht auf JBoss Wildfly (RestEasy) aufruft.Benutzerprinzipal von REST auf EJB-Ebene propagieren
Die REST-Dienste befinden sich in einem Krieg, der die ejb-Schicht aufruft. Ich weiß, wie BASIC oder jede kundenspezifische Form authenthication mit einem Resteasy Interceptor auf REST zu erreichen, die Header usw. Grundsätzlich wie hier beschrieben überprüft: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
Das Problem ist jetzt - das ist nur eine Prüfung an der Fassade REST ist. Innerhalb der EJB-Schicht kenne ich den Benutzer nicht, der sich gegenüber dem REST-Dienst authentifiziert hat.
diese löschen - wenn RMI und Remote-EJB Anrufe mit Authentifizierung verwenden, wird der Benutzername in Session Context gespeichert:
@Stateless
public class LoginService {
@Resource
private SessionContext sessionContext;
public String getCurrentUser() {
Principal principal = sessionContext.getCallerPrincipal();
return principal.getName(); //I need this to be the username from REST auth
//Currently it's anonymous
}
}
Gibt es eine Möglichkeit, den Benutzernamen in irgendeiner Standardmethode zu propagieren? Z.B. einen benutzerdefinierten Prinzipal zu SessionContext hinzufügen?
Diese Arbeit ist nicht auf Wildlfly 9.0.2. Versuchte "Staatenlose Ruhe" und rief "Stateless Session Bean" an. Versuchte "Pojo Rest" und rief "Stateless Session Bean" an. Keine Weitergabe von Benutzerprinzipal. W/@SecurityContext eingerichtet, mit Reseasy spezifischen Sicherheitskonfigurationen (resteasy.role.based.security). –