добавил Access-Control-Allow-Methods, Access-Control-Allow-Headers, пока *

добавил настройку для SameSite
This commit is contained in:
ialbert 2022-10-27 09:38:11 +03:00
parent b5cac139a8
commit 03a7f1056a
3 changed files with 29 additions and 4 deletions

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.backendapi.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.server.Cookie;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.boot.web.servlet.server.CookieSameSiteSupplier;
@ -13,6 +14,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.servlet.config.annotation.*;
import ru.spcex.clearing.backendapi.config.element.BackendApiSettings;
import java.util.List;
import java.util.function.Consumer;
@ -24,10 +26,14 @@ import java.util.function.Consumer;
@CrossOrigin
public class WebConfig implements WebMvcConfigurer {
private final MappingJackson2HttpMessageConverter customJsonHttpConverter;
private final String sameSite;
@Autowired
public WebConfig(@Qualifier("customJsonHttpConverter") MappingJackson2HttpMessageConverter customJsonHttpConverter) {
public WebConfig(@Qualifier("customJsonHttpConverter") MappingJackson2HttpMessageConverter customJsonHttpConverter,
BackendApiSettings backendSettings
) {
this.customJsonHttpConverter = customJsonHttpConverter;
this.sameSite = backendSettings.getSecurity().getSameSite();
}
@Override
@ -79,6 +85,16 @@ public class WebConfig implements WebMvcConfigurer {
@Bean
public CookieSameSiteSupplier applicationCookieSameSiteSupplier() {
if (sameSite == null) {
return null;
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.NONE.attributeValue())) {
return CookieSameSiteSupplier.ofNone();
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.LAX.attributeValue())) {
return CookieSameSiteSupplier.ofNone();
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.STRICT.attributeValue())) {
return CookieSameSiteSupplier.ofStrict();
} else {
throw new IllegalStateException("unknown SameSite setting");
}
}
}

View file

@ -70,7 +70,7 @@ public class ClearingCorsFilter extends OncePerRequestFilter {
// } else {
// methods = "*";
// }
// setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_METHODS, methods);
setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_METHODS, "*");
// String headers;
// if (head.length > 0) {
@ -78,7 +78,7 @@ public class ClearingCorsFilter extends OncePerRequestFilter {
// } else {
// headers = "*";
// }
// setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_HEADERS, headers);
setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_HEADERS, "*");
setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
log.trace("cors filter -> added ok");

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.backendapi.security.element;
public class SecuritySettings {
private Boolean authorizationDisabled = false;
private String sameSite;
public Boolean getAuthorizationDisabled() {
return authorizationDisabled;
@ -10,4 +11,12 @@ public class SecuritySettings {
public void setAuthorizationDisabled(Boolean authorizationDisabled) {
this.authorizationDisabled = authorizationDisabled;
}
public String getSameSite() {
return sameSite;
}
public void setSameSite(String sameSite) {
this.sameSite = sameSite;
}
}