Я пытаюсь установить атрибут SameSite для JSESSIONID cook ie в нашем шлюзе JHipster, и при попытке проверить в Chrome для него ничего не отображается в столбце SameSite. Возможно, примечание: в настоящее время мы не развернули и не запускаем приложение локально по HTTP (адрес localhost). Однако работа в режиме TLS также имеет ту же проблему.
Это две вещи, которые я пробовал, чтобы это работало:
- Второй подход из первого ответа здесь Как включить samesite для jsessionid cook ie - фильтр, который используется в файле SecurityConfiguration. java JHipster в методе
configure()
.
import java.io.IOException;
import java.util.Collection;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpHeaders;
public class SameSiteFilter implements javax.servlet.Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
addSameSiteCookieAttribute((HttpServletResponse) response); // add SameSite=strict cookie attribute
}
private void addSameSiteCookieAttribute(HttpServletResponse response) {
Collection<String> headers = response.getHeaders(HttpHeaders.SET_COOKIE);
boolean firstHeader = true;
for (String header : headers) { // there can be multiple Set-Cookie attributes
if (firstHeader) {
response.setHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=Strict"));
firstHeader = false;
continue;
}
response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=Strict"));
}
}
@Override
public void destroy() {
}
}
A
CookieSerializer
который мы получили от внутреннего партнера:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.web.http.DefaultCookieSerializer;
import org.springframework.session.web.http.CookieSerializer;
@Configuration
class CookieConfiguration {
@Bean
public static CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setSameSite("Lax");
return serializer;
}
}
Ни то, ни другое не работает. Есть ли что-нибудь еще, что мы можем попробовать для этого особого аромата весны?