Sto avviando un'applicazione che utilizza un'API REST che effettua chiamate a un livello EJB su JBoss Wildfly (RestEasy).Propagare l'utente principale da REST al livello EJB
I servizi REST sono all'interno di una guerra che chiama quindi il livello ejb. so come realizzare modulo personalizzato BASIC o uno qualsiasi dei authenthication a riposo a un RESTEasy Interceptor che controlla intestazioni ecc Fondamentalmente come descritto qui: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
Il problema ora è - questo è solo un controllo sulla facciata REST. All'interno del layer EJB non conosco l'utente che ha autenticato il servizio REST.
Per cancellare questo - quando si utilizza RMI e chiamate EJB remoto con autenticazione, il nome utente viene memorizzato in contesto di sessione:
@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
}
}
Esiste un modo per propagare il nome utente in qualche modo standard? Per esempio. mettere un'antenna personalizzata su SessionContext?
Questo non sta lavorando su Wildlfly 9.0.2. Ho provato "Riposo senza stato" definendo "Senzatetto senzatale". Ho provato "Pojo Rest" chiamando "Bean Session Stateless". Nessuna propagazione del principal utente. W/@SecurityContext set up, w/Resteasy specifiche configurazioni di sicurezza (resteasy.role.based.security). –