X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fmusic%2FMusicApplication.java;h=9b831e37da7d5ab53fabf33872105b67600fd347;hb=881f14bc8676cedd68e17bd007a869fa85578fa1;hp=90bcbbae598d39cdd2a07c762740a0ae468ed44e;hpb=54681d4a72173ff6b1919b05c4265af483c4d4b8;p=music.git diff --git a/src/main/java/org/onap/music/MusicApplication.java b/src/main/java/org/onap/music/MusicApplication.java index 90bcbbae..9b831e37 100755 --- a/src/main/java/org/onap/music/MusicApplication.java +++ b/src/main/java/org/onap/music/MusicApplication.java @@ -22,7 +22,6 @@ package org.onap.music; - import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -30,6 +29,11 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.onap.aaf.cadi.PropAccess; +import org.onap.music.authentication.CadiAuthFilter; +import org.onap.music.authentication.MusicAuthorizationFilter; +import org.onap.music.eelf.logging.EELFLoggerDelegate; +import org.onap.music.eelf.logging.MusicLoggingServletFilter; +import org.onap.music.main.CipherUtil; import org.onap.music.main.MusicUtil; import org.onap.music.main.PropertiesLoader; import org.springframework.beans.factory.annotation.Autowired; @@ -39,7 +43,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.FilterRegistrationBean; -//import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; @@ -48,31 +51,25 @@ import org.springframework.context.annotation.DependsOn; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.context.request.RequestContextListener; - @SpringBootApplication(scanBasePackages = { "org.onap.music.rest"}) -@EnableAutoConfiguration(exclude={CassandraDataAutoConfiguration.class}) -@ComponentScan(value = {"org.onap.music"}) +@EnableAutoConfiguration(exclude = { CassandraDataAutoConfiguration.class }) +@ComponentScan(value = { "org.onap.music" }) @EnableScheduling public class MusicApplication extends SpringBootServletInitializer { @Autowired - PropertiesLoader propertyLoader; - - + private PropertiesLoader propertyLoader; + private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicApplication.class); + public static void main(String[] args) { - System.setProperty("AFT_DME2_CLIENT_IGNORE_SSL_CONFIG","false"); - System.setProperty("AFT_DME2_CLIENT_KEYSTORE","/opt/app/music/etc/truststore2018.jks"); - System.setProperty("AFT_DME2_CLIENT_KEYSTORE_PASSWORD","changeit"); - System.setProperty("AFT_DME2_CLIENT_SSL_INCLUDE_PROTOCOLS","TLSv1.1,TLSv1.2"); new MusicApplication().configure(new SpringApplicationBuilder(MusicApplication.class)).run(args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { - + return application.sources(MusicApplication.class); } - @Bean("loadProperties") public void loadProperties() { @@ -81,54 +78,129 @@ public class MusicApplication extends SpringBootServletInitializer { @Autowired private ApplicationContext appContext; - + @Bean @DependsOn("loadProperties") public PropAccess propAccess() { - if(MusicUtil.getIsCadi()) - return new PropAccess(new String[] { "cadi_prop_files=/opt/app/music/etc/cadi.properties" }); - else + if (MusicUtil.getIsCadi()) { + return new PropAccess(new String[] { + "cadi_prop_files=/opt/app/music/etc/cadi.properties" }); + } else { return null; + } } - + @Bean(name = "cadiFilter") @DependsOn("loadProperties") public Filter cadiFilter() throws ServletException { propertyLoader.loadProperties(); - if(MusicUtil.getIsCadi()) { + if (MusicUtil.getIsCadi()) { PropAccess propAccess = propAccess(); CadiAuthFilter cadiFilter = new CadiAuthFilter(propAccess); + return cadiFilter; - } else + } else { return (ServletRequest request, ServletResponse response, FilterChain chain) -> { - //do nothing for now. + // do nothing for now. }; - + } + } + + /** + * Added for capturing custom header values from client. + * + * order is set to 1 for this filter + * + * sp931a + * + * @return + * @throws ServletException + */ + @Bean(name="logFilter") + @DependsOn("loadProperties") + public FilterRegistrationBean loggingFilterRegistration() throws ServletException { + logger.info("loggingFilterRegistration called for log filter.."); + propertyLoader.loadProperties(); + FilterRegistrationBean frb = new FilterRegistrationBean<>(); + frb.setFilter(new MusicLoggingServletFilter()); + frb.addUrlPatterns( + "/v2/keyspaces/*", + "/v2/locks/*", + "/v2/priorityq/*" + ); + frb.setName("logFilter"); + frb.setOrder(1); + return frb; } + @Bean @DependsOn("loadProperties") public FilterRegistrationBean cadiFilterRegistration() throws ServletException { + logger.info("cadiFilterRegistration called for cadi filter.."); FilterRegistrationBean frb = new FilterRegistrationBean<>(); frb.setFilter(cadiFilter()); + // The Following Patterns are used to control what APIs will be secure // TODO: Make this a configurable item. Build this from an array? - if(MusicUtil.getIsCadi()) { + if (MusicUtil.getIsCadi()) { frb.addUrlPatterns( - "/v2/keyspaces/*", - "/v2/locks/*", - "/v3/locks/*", - "/v2/priorityq/*", - "/v2/admin/*" - ); + "/v2/keyspaces/*", + "/v2/locks/*", + "/v2/priorityq/*" + ); } else { frb.addUrlPatterns("/v0/test"); } frb.setName("cadiFilter"); - frb.setOrder(0); + frb.setOrder(2); return frb; } + + /** + * Added for Authorization using CADI + * + * sp931a + * + * @return + * @throws ServletException + */ + @Bean + @DependsOn("loadProperties") + public FilterRegistrationBean cadiFilterRegistrationForAuth() throws ServletException { + logger.info("cadiFilterRegistrationForAuth called for cadi auth filter.."); + FilterRegistrationBean frb = new FilterRegistrationBean<>(); + frb.setFilter(cadiMusicAuthFilter()); + + if (MusicUtil.getIsCadi()) { + frb.addUrlPatterns( + "/v2/keyspaces/*", + "/v2/locks/*", + "/v2/priorityq/*" + ); + } else { + frb.addUrlPatterns("/v0/test"); + } + frb.setName("cadiMusicAuthFilter"); + frb.setOrder(3); + return frb; + } + + @Bean(name = "cadiMusicAuthFilter") + @DependsOn("loadProperties") + public Filter cadiMusicAuthFilter() throws ServletException { + propertyLoader.loadProperties(); + if (MusicUtil.getIsCadi()) { + MusicAuthorizationFilter authFilter = new MusicAuthorizationFilter(); + return authFilter; + } else { + return (ServletRequest request, ServletResponse response, FilterChain chain) -> { + // do nothing for now. + }; + } + } + @Bean @ConditionalOnMissingBean(RequestContextListener.class) public RequestContextListener requestContextListener() {