package com.bitmonlab.osiris.api.security.dropwizard; import javax.servlet.Filter; import org.springframework.context.ApplicationContext; import org.springframework.security.web.SecurityFilterChain; import com.bitmonlab.osiris.commons.model.security.BasicAuth; import com.sun.jersey.api.model.Parameter; import com.sun.jersey.core.spi.component.ComponentContext; import com.sun.jersey.core.spi.component.ComponentScope; import com.sun.jersey.spi.inject.Injectable; import com.sun.jersey.spi.inject.InjectableProvider; import com.yammer.dropwizard.auth.Auth; import com.yammer.dropwizard.config.Environment; public class SpringSecurityProvider implements InjectableProvider<Auth, Parameter> { ApplicationContext context; public SpringSecurityProvider(ApplicationContext context) { this.context = context; } public void registerProvider(Environment environment) { registerSpringSecurityFilters(environment); environment.addProvider(this); } protected void registerSpringSecurityFilters(Environment environment) { SecurityFilterChain filterChain = context.getBean(SecurityFilterChain.class); for (Filter filter : filterChain.getFilters()) { environment.addFilter(filter, "/*"); } } public Injectable<BasicAuth> getInjectable(ComponentContext componentContext, Auth auth, Parameter parameter) { return new SpringSecurityInjectable(auth.required(), context); } public ComponentScope getScope() { return ComponentScope.PerRequest; } }