URL-адреса безопасности Spring 3 и относительного перенаправления - PullRequest
6 голосов
/ 31 мая 2011

У нас есть приложение Spring 3 с Spring Security за прокси-сервером Squid.Проблема заключается в том, что Spring знает только о внутреннем URL-адресе squid, поэтому после успешного входа на example.com/login вместо перенаправления на example.com/home он перенаправляет на internal.example.com.

Кто-нибудь знает, как справиться с этой ситуацией??

Моя конфигурация:

<security:http use-expressions="true" auto-config="true">
    <security:intercept-url pattern="/" access="hasRole('ROLE_ANONYMOUS') or hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/**" access="hasRole('ROLE_GENERAL_ADMINISTRATION')"/>
    <security:intercept-url pattern="/static/**" filters="none"/>
    <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/"/>
    <security:form-login login-page="/" default-target-url="/dashboard"/>
    <security:anonymous/>
</security:http>

Редактировать:

В моем случае администраторы неправильно настроили mod_jk, поэтому все было в порядке с squid и вышеуказанным конфигом.

Ответы [ 2 ]

1 голос
/ 31 мая 2011

У меня есть веб-приложение с защитой Spring за прокси-сервером Apache HTTP Reverse и какое-то глупое приложение, которое ведет себя так, как вы описали выше, и решением для нас было использовать модуль mod_rewrite

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

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

если вы настроите URL

 <security:form-login login-page="//login.jsp" login-processing-url="/login" always-use-default-target="true"/>

Должен вести себя одинаково во внутреннем или внешнем URL, это похоже на проблему в конфигурации.

0 голосов
/ 10 июля 2013

У меня похожая проблема с обратным прокси-сервером nginx перед моими (в настоящее время PHP) приложениями, но другие рекомендуют, чтобы работа по исправлению URL-адресов выполнялась на прокси-сервере, например, http://www.informit.com/articles/article.aspx?p=169534:

Переотображение заголовка ответа . Заголовки ответа могут содержать информация, которая явно указывает на контент-веб-сервер. Один Примером является заголовок «Location:», который используется с перенаправлениями. Обратные прокси-серверы переназначают поле «Location:», заменяя ссылка на контент-сервер с собственным адресом.

Также ответ на связанный вопрос: «Перенаправление на https для нескольких служб, использующих Spring» .

...