Sto costruendo servizio riposo utilizzando un meccanismo di autenticazione/autorizzazione come descritto in questo tutorial: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/Qual è la corretta sostituzione di Pre-Process 3.X PreProcessInterceptor?
Fondamentalmente si utilizza l'interfaccia PreProcessInterceptor per analizzare il metodo di destinazione per le annotazioni (da javax.annotation.security pacchetto) che descrivono i ruoli richiesti per accedere quel metodo. Poiché l'autenticatore qui è un intercettore, può annullare l'invocazione del metodo di destinazione, restituendo un 401 (non autorizzato) se necessario.
Il problema qui è che l'interfaccia org.jboss.resteasy.spi.interception.PreProcessInterceptor è deprecata nella versione RestEasy corrente (3.0.1) e sto riscontrando problemi nel tentativo di implementare lo stesso comportamento con lo standard Interfacce JAX-RS.
Sto utilizzando l'interfaccia javax.ws.rs.ext.ReaderInterceptor per intercettare la chiamata. Ma in qualche modo il server non lo chiama mai: l'intercettore viene semplicemente ignorato.
sto registrando le intercettori/risorse allo stesso modo come ho fatto con l'ex PreProcessInterceptor, e utilizzando lo stesso @Provider e le annotazioni @ServerInterceptor:
ServerApplication:
public class ServerApplication extends javax.ws.rs.core.Application {
private final HashSet<Object> singletons = new LinkedHashSet<Object>();
public ServerApplication() {
singletons.add(new SecurityInterceptor());
singletons.add(...); //add each of my rest resources
}
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
return set;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
SecurityInterceptor:
@Provider
@ServerInterceptor
public class SecurityInterceptor implements javax.ws.rs.ext.ReaderInterceptor {
@Override
public Object aroundReadFrom(ReaderInterceptorContext context){
//code that is never called... so lonely here...
}
}
Eventuali approfondimenti su come posso risolvere questo problema?
Grazie.
Aggiornamento dell'esempio completo in un altro post: http://howtodoinjava.com/2013/07/25/jax-rs-2-0-resteasy-3-0-2-final-security-tutorial/ – lokesh