Uruchamiam aplikację, która używa interfejsu API REST, który wykonuje wywołania do warstwy EJB na JBoss Wildfly (RestEasy).Propaguj główną nazwę użytkownika z REST do warstwy EJB
Usługi REST znajdują się w czasie wojny, która następnie wywołuje warstwę ESP. wiem jak osiągnąć podstawowy lub dowolną niestandardową formę authenthication na odpoczynek z RestEasy Interceptor, który sprawdza nagłówki itp zasadzie jak opisane tutaj: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
Problem jest teraz - jest to po prostu sprawdzić na fasadzie REST. Wewnątrz warstwy EJB nie znam użytkownika, który uwierzytelnił się w usłudze REST.
Aby to wyjaśnić - przy użyciu RMI i zdalnych wywołań EJB z uwierzytelnianiem, nazwa użytkownika jest przechowywana w sesji Kontekst:
@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
}
}
Czy istnieje sposób, aby propagować nazwę użytkownika w jakiś sposób standardowy? Na przykład. umieszczenie niestandardowego zlecenia w SessionContext?
To nie działa na Wildlfly 9.0.2. Próbowałem "Stateless Rest" nazywając "Bezpaństwowe Session Bean". Próbowałem "Pojo Rest" nazywając "Bezpaństwowe ziarno sesji". Brak propagacji głównej użytkownika. Konfiguracja W/@SecurityContext, w/Resteasy specyficzne konfiguracje zabezpieczeń (resteasy.role.based.security). –