Принудительная загрузка HTTPS в весеннюю загрузку

#spring #spring-boot #security #spring-security #https

Вопрос:

Похоже, что настройка server.ssl.enabled в приложении Spring Boot заставляет все запросы использовать HTTPS. Кроме того, из документации и других статей (например, здесь) кажется, что requiresSecure() предназначен для принудительного использования HTTPS. Каково их соотношение и когда следует использовать каждый из них?

p.s. Когда я использую server.ssl.enabled=true, кажется, что HTTPS применяется на всех страницах, независимо от того, что я установил requiresInsecure(). И, когда server.ssl.enabled не установлен, настройка requiresSecure (), похоже, не возымела никакого эффекта.

Ответ №1:

Из документации [1] значение по умолчанию server.ssl.enabled равно true. Поэтому, когда server.ssl.enabled не установлен, он по-прежнему считается истинным. requiresSecure используется для того, чтобы убедиться, что используется только https (там, избегая http-запроса).

Основное использование server.ssl.enabled заключается в использовании в сочетании с server.ssl.key-store/key-store-apssworrd для включения ssl для встроенного Tomcat.

Комментарии:

1. Я попытался ответить на этот вопрос сам:), но не был уверен, можно ли переопределить server.ssl.enabled настройку с requiresSecure помощью / requiresInsecure .

2. @charybr Я использую Spring boot и встроенного кота. Похоже, что в этом случае server.ssl.enabled по умолчанию неверен, потому что, когда я устанавливаю его в значение true, он требует https, а когда не установлен, не требует. Однако, как это отвечает на мой вопрос? Когда мы должны использовать requiresSecure и когда мы должны использовать server.ssl.enabled?

3. server.ssl.включен без requiresSecure позволяет использовать как http, так и https. Где as requiresSecure разрешает только https.

4. Согласно моим тестированиям, казалось, что requiresSecure применяет HTTPS (без HTTP).