Оказывается, что Spring Security использует ServletRequest.getServerPort (), чтобы определить, использует ли он безопасный порт. Мой tomcat был настроен с использованием 8080 и 8443, поэтому, когда ELB перенаправил запрос с 443 на мой внутренний tomcat на 8443, веб-приложение не приняло это как безопасный порт:
20 Jun 18:16:49,184 ["http-bio-8443"-exec-5] DEBUG org.springframework.security. web.access.channel.RetryWithHttpsEntryPoint - Redirecting to: /login.xhtml
Я также пытался использовать прокси-порт, но не смог заставить его работать.
Также, если вы сконфигурируете порты безопасности Spring для использования 8443, вместо этого он не будет правильно перенаправлять (он перенаправит приложение на 8443, который не существует извне).
Короче говоря ... следующие настройки работали:
ELB вперед 80-> 80 и 443-> 443.
Настройте Tomcat для использования 80 и 443.
Настройте сопоставления портов для использования 80 и 443 в Spring Security