このチュートリアルで説明されているように、認証/承認メカニズムを使用して残りのサービスを構築しています: http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
基本的に、PreProcessInterceptorインターフェイスを使用してターゲット メソッドをスキャンし、そのメソッドにアクセスするために必要なロールを記述するアノテーション ( javax.annotation.securityパッケージから) を探します。ここでのオーセンティケーターはインターセプターであるため、必要に応じて 401 (無許可) を返し、ターゲット メソッドの呼び出しをキャンセルできます。
ここでの問題は、インターフェイス org.jboss.resteasy.spi.interception.PreProcessInterceptor が現在の RestEasy バージョン (3.0.1) で非推奨になっていることです。標準の JAX-RS インターフェイスで同じ動作を実装しようとすると問題が発生します。 .
呼び出しをインターセプトするために javax.ws.rs.ext.ReaderInterceptor インターフェイスを使用しています。しかし、どういうわけか、サーバーはそれを呼び出しません。インターセプターは単に無視されます。
以前の PreProcessInterceptor で行ったのと同じ方法でインターセプター/リソースを登録し、同じ @Provider および @ServerInterceptor アノテーションを使用しています。
サーバーアプリケーション:
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;
}
}
セキュリティインターセプター:
@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...
}
}
この問題を解決するにはどうすればよいかについての洞察はありますか?
ありがとうございました。