@Override public void configure(FeatureContext context) { final int priorityInc = 3000; // Jersey MOXY provider have higher priority(7000), so we need set higher than it int priority = Priorities.USER + priorityInc; Configuration config = context.getConfiguration(); if (!config.isRegistered(ParsecValidationExceptionMapper.class)) { context.register(ParsecValidationExceptionMapper.class, priority); } if (!config.isRegistered(ValidationConfigurationContextResolver.class)) { context.register(ValidationConfigurationContextResolver.class, priority); } if (!config.isRegistered(ParsecMoxyProvider.class)) { context.register(ParsecMoxyProvider.class, priority); } if (!config.isRegistered(JaxbExceptionMapper.class)) { context.register(JaxbExceptionMapper.class, priority); } }
@Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { List<Annotation> authzSpecs = new ArrayList<>(); for (Class<? extends Annotation> annotationClass : shiroAnnotations) { // XXX What is the performance of getAnnotation vs getAnnotations? Annotation classAuthzSpec = resourceInfo.getResourceClass().getAnnotation(annotationClass); Annotation methodAuthzSpec = resourceInfo.getResourceMethod().getAnnotation(annotationClass); if (classAuthzSpec != null) authzSpecs.add(classAuthzSpec); if (methodAuthzSpec != null) authzSpecs.add(methodAuthzSpec); } if (!authzSpecs.isEmpty()) { context.register(new AuthorizationFilter(authzSpecs), Priorities.AUTHORIZATION); } }
/** * {@inheritDoc} */ @Override public boolean configure(FeatureContext context) { Configuration configuration = context.getConfiguration(); if (!configuration.isRegistered(UriConnegFilter.class)) { context.register(UriConnegFilter.class, Priorities.AUTHENTICATION - 100); } if (!context.getConfiguration().isRegistered(DownloadEntityFilter.class)) { context.register(DownloadEntityFilter.class); } if (!configuration.isRegistered(LoadBalancerRequestFilter.class)) { context.register(LoadBalancerRequestFilter.class); } return true; }
@Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { List<Annotation> authzSpecs = new ArrayList<>(); boolean canRedirect = true; for (Class<? extends Annotation> annotationClass : filterAnnotations) { // XXX What is the performance of getAnnotation vs getAnnotations? Annotation classAuthzSpec = resourceInfo.getResourceClass().getAnnotation(annotationClass); Annotation methodAuthzSpec = resourceInfo.getResourceMethod().getAnnotation(annotationClass); if (classAuthzSpec != null) authzSpecs.add(classAuthzSpec); if (methodAuthzSpec != null) authzSpecs.add(methodAuthzSpec); if(resourceInfo.getResourceClass().isAnnotationPresent(NoAuthRedirect.class) || resourceInfo.getResourceMethod().isAnnotationPresent(NoAuthRedirect.class)) canRedirect = false; if(resourceInfo.getResourceClass().isAnnotationPresent(NoAuthFilter.class) || resourceInfo.getResourceMethod().isAnnotationPresent(NoAuthFilter.class)) return; } if (!authzSpecs.isEmpty()) { if(canRedirect) context.register(new LoginRedirectFilter(), Priorities.AUTHENTICATION + 1); context.register(new AuthorizationFilter(authzSpecs), Priorities.AUTHORIZATION); } }
/** * Checks if given <code>element</code> has the {@link Authenticate} annotation and if so registers the required * authentication filters. * @param context Feature context * @param element Annotated element * @return <code>true</code> if the {@link Authenticate} annotation was found and the authentication filters were * registered, <code>false</code> otherwise */ private static boolean registerAuthenticationFilters(FeatureContext context, AnnotatedElement element) { if (element.isAnnotationPresent(Authenticate.class)) { // AuthContext setup for SecurityContext context.register(AuthContextFilter.class, Priorities.AUTHENTICATION - 10); // Authenticator context.register(new AuthenticationFilter(element.getAnnotation(Authenticate.class).schemes()), Priorities.AUTHENTICATION); return true; } return false; }
@Override public boolean configure(FeatureContext context) { final Configuration config = context.getConfiguration(); context.property("jersey.config." + config.getRuntimeType().toString().toLowerCase(Locale.ENGLISH) + ".jsonFeature", "JacksonFeature"); context.register(JsonParseExceptionMapper.class, Priorities.ENTITY_CODER); context.register(JsonMappingExceptionMapper.class, Priorities.ENTITY_CODER); context.register(JacksonJsonProviderForJsonMediaType.class, Priorities.ENTITY_CODER); return true; }
@Test public void testAnnotations() { // Check that the class is correctly annotated assertNotNull("@PreMatching annotation is required to modify headers", MediaTypeFilter.class.getAnnotation(PreMatching.class)); Priority priority = MediaTypeFilter.class.getAnnotation(Priority.class); assertNotNull("@Priority annotation is required to modify headers", priority); assertTrue("priority should be higher than HEADER_DECORATOR", priority.value() <= Priorities.HEADER_DECORATOR); }
@Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { context.register(new ContainerRequestFilter() { @Override public void filter(ContainerRequestContext requestContext) throws IOException { if (requestContext.getUriInfo().getPath().endsWith("filtered")) { throw new ForbiddenException(); } } }, Priorities.AUTHORIZATION); }
public Builder(Tracer tracer) { this.tracer = tracer; this.spanDecorators = Collections.singletonList(ClientSpanDecorator.STANDARD_TAGS); this.serializationSpanDecorators = Arrays.asList(InterceptorSpanDecorator.STANDARD_TAGS); // by default do not use Priorities.AUTHENTICATION due to security concerns this.priority = Priorities.HEADER_DECORATOR; this.serializationPriority = Priorities.ENTITY_CODER; this.traceSerialization = true; }
public Builder(Tracer tracer) { this.tracer = tracer; this.spanDecorators = Collections.singletonList(ServerSpanDecorator.STANDARD_TAGS); this.serializationSpanDecorators = Collections.singletonList(InterceptorSpanDecorator.STANDARD_TAGS); // by default do not use Priorities.AUTHENTICATION due to security concerns this.priority = Priorities.HEADER_DECORATOR; this.serializationPriority = Priorities.ENTITY_CODER; this.allTraced = true; this.operationNameBuilder = WildcardOperationName.newBuilder(); this.traceSerialization = true; }
@Override public int getPriority() { return Priorities.USER + 1; }