Цикл входа в систему с Spring Security require-channel и Amazon Elastic Load Balancer - PullRequest
6 голосов
/ 20 июня 2011

Я пытаюсь заставить мою весеннюю систему безопасности работать на сервере, используя Amazon Elastic Load Balancer (ELB). ELB настроен на порт 80 для перенаправления в мое приложение через порт 8080, а на порт 443 также для пересылки на 8080.

<security:intercept-url pattern="/login.xhtml"  access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"  />

<security:port-mappings>
            <security:port-mapping http="80" https="443" />
</security:port-mappings>

Всякий раз, когда я захожу на эту страницу, я вхожу в цикл входа в систему. Есть идеи, как это решить? Не уверен, что у Spring Security возникли проблемы с тем фактом, что ELB перенаправляет трафик с порта https 443 на мое приложение через порт 8080.

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Оказывается, что 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

2 голосов
/ 20 июня 2011

Цикл перенаправления почти всегда происходит, потому что у вас есть защищенный URL, который не должен быть защищен. Все URL-адреса защищены по умолчанию в весенней безопасности.

Также, если JavaScript, CSS или ресурсы изображений загружаются отдельными запросами со страницы входа в систему, их URL-адреса также защищены, и это может вызывать цикл.

Включите журнал отладки, и вы должны увидеть, почему вас перенаправляют. Это поможет вам при ведении журнала отладки (поиск на странице отладки).

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