|
|
|
@ -18,7 +18,9 @@ package org.thingsboard.server.config; |
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Qualifier; |
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
|
|
|
import org.springframework.boot.autoconfigure.security.SecurityProperties; |
|
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties; |
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
import org.springframework.core.annotation.Order; |
|
|
|
@ -34,6 +36,9 @@ import org.springframework.security.web.authentication.AuthenticationFailureHand |
|
|
|
import org.springframework.security.web.authentication.AuthenticationSuccessHandler; |
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
|
|
|
import org.springframework.security.web.util.matcher.AntPathRequestMatcher; |
|
|
|
import org.springframework.web.cors.CorsUtils; |
|
|
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
|
|
|
import org.springframework.web.filter.CorsFilter; |
|
|
|
import org.thingsboard.server.exception.ThingsboardErrorResponseHandler; |
|
|
|
import org.thingsboard.server.service.security.auth.rest.RestAuthenticationProvider; |
|
|
|
import org.thingsboard.server.service.security.auth.rest.RestLoginProcessingFilter; |
|
|
|
@ -145,6 +150,8 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
|
|
@Override |
|
|
|
protected void configure(HttpSecurity http) throws Exception { |
|
|
|
http.headers().cacheControl().disable().frameOptions().disable() |
|
|
|
.and() |
|
|
|
.cors() |
|
|
|
.and() |
|
|
|
.csrf().disable() |
|
|
|
.exceptionHandling() |
|
|
|
@ -172,4 +179,17 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
|
|
.addFilterBefore(buildRefreshTokenProcessingFilter(), UsernamePasswordAuthenticationFilter.class) |
|
|
|
.addFilterBefore(buildWsJwtTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
@ConditionalOnMissingBean(CorsFilter.class) |
|
|
|
public CorsFilter corsFilter(@Autowired MvcCorsProperties mvcCorsProperties) { |
|
|
|
if (mvcCorsProperties.getMappings().size() == 0) { |
|
|
|
return new CorsFilter(new UrlBasedCorsConfigurationSource()); |
|
|
|
} else { |
|
|
|
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |
|
|
|
source.setCorsConfigurations(mvcCorsProperties.getMappings()); |
|
|
|
return new CorsFilter(source); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|