#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).