Как установить флаг Cookie на том же сайте в Spring Boot? - PullRequest
2 голосов
/ 15 октября 2019

Можно ли установить флаг Cookie того же сайта при загрузке Spring?

Моя проблема в Chrome:

Файл cookie, связанный с ресурсом между сайтами в http://google.com/ был установлен без атрибута SameSite. В следующем выпуске Chrome файлы cookie будут отправляться только с межсайтовыми запросами, если для них установлены значения SameSite=None и Secure. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложения»> «Хранилище»> «Файлы cookie» и получить дополнительную информацию по https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

способам решения этой проблемы

Ответы [ 3 ]

2 голосов
/ 21 октября 2019

Это открытая проблема с Spring Session (https://github.com/spring-projects/spring-security/issues/7537)

. Как я проверял в Spring-Boot (2.1.7.RELEASE), по умолчанию он использует DefaultCookieSerializer, который содержит свойство sameSite, по умолчаниюLax.

Вы можете изменить это при загрузке приложения, используя следующий код.

Примечание: это хак до тех пор, пока в следующем весеннем выпуске не появится реальное исправление (конфигурация).

@Component
@AllArgsConstructor
public class SameSiteInjector {

  private final ApplicationContext applicationContext;

  @EventListener
  public void onApplicationEvent(ContextRefreshedEvent event) {
    DefaultCookieSerializer cookieSerializer = applicationContext.getBean(DefaultCookieSerializer.class);
    log.info("Received DefaultCookieSerializer, Overriding SameSite Strict");
    cookieSerializer.setSameSite("strict");
  }
}
2 голосов
/ 15 октября 2019

Со времени последнего обновления Chrome тоже начал показывать мне это сообщение. Не совсем ответ относительно весны, но вы можете добавить флаг cookie в заголовок сессии. В моем случае, поскольку я использую Spring Security, я намереваюсь добавить его, когда пользователь входит в систему, так как я уже манипулирую сессией для добавления данных аутентификации.

Для получения дополнительной информации, проверьте этоответ на похожую тему: https://stackoverflow.com/a/43250133

Чтобы добавить заголовок сеанса сразу после входа пользователя, вы можете основать свой код на этой теме (создав компонент Spring, который реализует AuthenticationSuccessHandler): SpringБезопасность. Перенаправить на защищенную страницу после аутентификации

0 голосов
/ 06 ноября 2019

Для решения этой проблемы следуйте документации: https://github.com/GoogleChromeLabs/samesite-examples

Имеются примеры на разных языках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...