Ich Aufbau Rest Dienst eines Authentifizierungs-/Autorisierungsmechanismus, wie in dieser Anleitung beschrieben: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/Was ist der richtige Ersatz für den Rasteasy 3.X PreProcessInterceptor?
Grundsätzlich verwendet es die PreProcessInterceptor Schnittstelle, um die Zielmethode für Annotationen zu scannen (von javax.annotation.security Paket), das die erforderlichen Rollen Zugriffe beschreiben diese Methode. Da der Authentifikator hier ein Interceptor ist, kann er den Aufruf der Zielmethode abbrechen und bei Bedarf eine 401 (nicht autorisiert) zurückgeben.
Das Problem hier ist, dass die Schnittstelle org.jboss.resteasy.spi.interception.PreProcessInterceptor in der aktuellen RestEasy-Version (3.0.1) veraltet ist, und ich habe Probleme, das gleiche Verhalten mit dem Standard zu implementieren JAX-RS-Schnittstellen.
Ich benutze die javax.ws.rs.ext.ReaderInterceptor-Schnittstelle, um den Anruf abzufangen. Aber irgendwie ruft der Server es nie an: der Abfangjäger wird einfach ignoriert.
Ich Registrierung der Abfangjäger/Ressourcen die gleiche Art und Weise, wie ich mit dem ehemaligen PreProcessInterceptor getan hat, und mit dem gleichen @Provider und @ServerInterceptor Anmerkungen:
Serveranwendung:
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...
}
}
Irgendwelche Erkenntnisse darüber, wie ich dieses Problem lösen kann?
Vielen Dank.
Das vollständige Beispiel in einem anderen Beitrag aktualisiert: http://howtodoinjava.com/2013/07/25/jax-rs-2-0-restasy-3-0-2-final-security-tutorial/ – lokesh