JAX-RS 2.0 Filterparameter über die Annotation @NameBinding

Ich habe einige JAX-RS 2.0-Ressourcen (unter Verwendung von Jeresey 2.4, das in einem Servlet-Container ausgeführt wird) und einen Filter erstellt, der die Authentifizierung und Autorisierung verwaltet, die selektiv über eine @NameBinding-Annotation angewendet werden können. Das alles funktioniert super.

Ich möchte in der Lage sein, einige Parameter für diese Annotation zu definieren (insbesondere Sicherheitsberechtigungen, die für den Zugriff auf jede Methode / Ressource erforderlich sind), die dem Filter zur Laufzeit zur Verfügung stehen, um dieses Verhalten zu ändern.

Ich bemerke, dass Interceptors dies über javax.ws.rs.ext.InterceptorContext.getAnnotations () tun können, aber es gibt in javax.ws.rs.container.ContainerRequestContext keine Entsprechung für Filter. Irgendwelche Ideen, wie dies erreicht werden kann? Ich würde gerne in der Lage sein, Folgendes zu tun:

@Target({TYPE, METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding
public @interface Secured {
    String[] requiredPermissions() default {};
}

@Secured
@Priority(Priorities.AUTHENTICATION)
public class SecurityRequestFilter implements ContainerRequestFilter {
    @Override
    public void filter(ContainerRequestContext containerRequestContext) throws IOException {
        // extract credentials, verify them and check that the user has required permissions, aborting if not
    }
}

@Path("/userConfiguration/")
public class UserConfigurationResource {
    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Secured(requiredPermissions = {"configuration-permission"})
    public Response getConfig(@Context HttpServletRequest httpServletRequest) {
        // produce a response
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage