/* * Copyright © 2017-2018 AT&T Intellectual Property. * Modifications Copyright © 2018 IBM. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onap.ccsdk.cds.blueprintsprocessor import org.onap.ccsdk.cds.blueprintsprocessor.security.AuthenticationManager import org.onap.ccsdk.cds.blueprintsprocessor.security.SecurityContextRepository import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.http.HttpMethod import org.springframework.security.config.web.server.ServerHttpSecurity import org.springframework.security.web.server.SecurityWebFilterChain import org.springframework.web.reactive.config.CorsRegistry import org.springframework.web.reactive.config.ResourceHandlerRegistry import org.springframework.web.reactive.config.WebFluxConfigurer /** * WebConfig * * @author Brinda Santh */ @Configuration open class WebConfig(private val authenticationManager: AuthenticationManager, private val securityContextRepository: SecurityContextRepository) : WebFluxConfigurer { override fun addResourceHandlers(registry: ResourceHandlerRegistry) { registry.addResourceHandler("/swagger-ui.html**") .addResourceLocations("classpath:/META-INF/resources/") registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/") } override fun addCorsMappings(corsRegistry: CorsRegistry) { corsRegistry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*") .maxAge(3600) } @Bean open fun securityWebFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain { return http.csrf().disable() .formLogin().disable() .httpBasic().disable() .authenticationManager(authenticationManager) .securityContextRepository(securityContextRepository!!) .authorizeExchange() .pathMatchers(HttpMethod.OPTIONS).permitAll() .anyExchange().authenticated() .and().build() } }