Безопасность Spring - как упомянуть и форму базирующаяся и стандартная аутентификация

Да и нет.

часть адреса сервера НЕ шифруется, так как она используется для установки соединения.

Это может измениться в будущем с зашифрованным SNI и DNS, но с 2 018 обычно не используются обе технологии.

путь, строка запроса и т.д. шифруется.

Примечание для ПОЛУЧАЕТ запросы, пользователь все еще сможет вырезать и вставить URL из адресной панели, и Вы, вероятно, не захотите помещать конфиденциальную информацию там, которая видна любому смотрящему на экран.

13
задан novice 19 August 2009 в 00:13
поделиться

3 ответа

Кажется, что невозможно объявить как форму, так и базовую аутентификацию, используя конфигурацию пространства имен.

Ссылка на сообщество Spring: http://forum.springsource.org/showthread.php?t=72724&highlight=form+basic+authentication

0
ответ дан 1 December 2019 в 23:48
поделиться

Конечный результат, который вы хотите, возможен, я столкнулся с той же проблемой, и вот мое решение.

В любое время при определении формы входа в систему в пространстве имен он автоматически переопределит любые другие фильтры аутентификации, применяемые через пространство имен. Это делается путем упорядочивания цепочки фильтров. Посмотрите на FilterChainOrder.java в Spring Security, чтобы увидеть, как порядок фактически применяется к каждому фильтру.

Чтобы обойти эту проблему, удалите тег http-basic из пространства имен, затем вручную определите bean-компонент для обработки базовой аутентификации и разместите его порядок перед AuthenticationProcessingFilter, потому что это весенний фильтр безопасности, который будет обрабатывать форму входа в систему.

Пружина BasicProcessingFilter обеспечивает обработку базовой аутентификации как пассивный фильтр, Это означает, что если учетные данные отсутствуют, он будет продолжать вниз по цепочке фильтров, пока не найдет соответствующий фильтр для обработки запроса.

Теперь, вручную определяя bean-компонент BasicProcessingFilter, мы можем установить порядок, в котором он будет отображаться в цепочке фильтров. Ниже приведен пример дополнительных деклараций xml, которые вам необходимо будет предоставить в xml безопасности (Spring Security <3.x)

<bean id="basicProcessingFilter" class="org.springframework.security.ui.basicauth.BasicProcessingFilter">
    <property name="authenticationManager"><ref bean="authenticationManager"/></property>
     <security:custom-filter before="AUTHENTICATION_PROCESSING_FILTER"/>
    <property name="authenticationEntryPoint"><ref bean="authenticationEntryPoint"/></property>
</bean>

<bean id="authenticationEntryPoint"
    class="org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint">
              <property name="realmName" value="My Realm Here"/>
</bean>

Также обратите внимание, если ваша ссылка authenticationManager не найдена, вы можете добавить псевдоним в свое пространство имен, например ниже.

<security:authentication-manager alias="authenticationManager"/>

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

Проблема с этим подходом состоит в том, что если учетные данные введены правильно, ответом будет страница входа из фильтра формы-входа.

Однако похоже, что эта проблема будет исправлена ​​Spring в версии 3.1 Spring Security, и в этом обходном пути больше не будет необходимости.

6
ответ дан 1 December 2019 в 23:48
поделиться

Ответ от @ grimesjm прав. Однако, если вы используете Spring 3.x, вам необходимо адаптировать имена классов к:

<bean id="basicProcessingFilter" class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
    <property name="authenticationManager">
        <ref bean="authenticationManager" />
    </property> 
    <property name="authenticationEntryPoint">
        <ref bean="authenticationEntryPoint" />
    </property>
</bean>

<bean id="authenticationEntryPoint"
    class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint">
    <property name="realmName" value="Your realm here" />
</bean>

и

<sec:http auto-config="true">
    ... your intercept-url here

    <sec:custom-filter before="SECURITY_CONTEXT_FILTER" ref="basicProcessingFilter" />

    <sec:form-login ... />
    ....
</sec:http>

Я не знаю, является ли размещение фильтра перед SECURITY_CONTEXT_FILTER лучшим вариантом или нет.

10
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: