2012-01-20 4 views
1

У меня проблемы с двойной аутентификацией. Я внедрил форму аутентификации через всплывающее окно, которое всегда находится сверху. Но у меня есть проблема, вероятно, с перехватчиками, которые вызывают запрос на проверку подлинности с помощью Tomcat еще до начала применения:Двойная аутентификация в приложении GWT/EXT + Spring Security

Имя пользователя и пароль запрашивается по http://127.0.0.1:8888. На сайте говорится: «Spring Security Application»

Если отключить перехватчики, я вижу в журнале, что SecurityContextHolder обрабатывает пользователя как Anonymous.

Так что мой вопрос: Могу ли я как-то отключить этот первый экран входа Tomcat?

Моя конфигурация XML Spring-безопасности:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
      xmlns:beans="http://www.springframework.org/schema/beans" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
           http://www.springframework.org/schema/security 
           http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 


<authentication-manager alias="authenticationManager"> 
    <authentication-provider ref="customAuthenticationProvider"/> 
</authentication-manager> 

<beans:bean id="customAuthenticationProvider" class="com.myCompany.model.security.CustomAuthenticationProvider" > 
    <beans:property name="databaseId" value="${configuration.databaseId}" /> 
    <beans:property name="applicationId" value="${configuration.applicationId}" /> 
</beans:bean> 

<http auto-config="true" > 
     <intercept-url pattern="/myApp/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
     <intercept-url pattern="/MyApp.html*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
     <intercept-url pattern="/gwt/**" access="ROLE_USER"/> 
     <intercept-url pattern="/**/*.html" access="ROLE_USER"/> 

     <intercept-url pattern="/css/**" filters="none"/> 
     <intercept-url pattern="/**" access="ROLE_USER" /> 

     <http-basic /> 
</http> 

<global-method-security secured-annotations="enabled" /> 

</beans:beans> 
+1

Ваша проблема в том, что Spring Security основана на перенаправлении. Я когда-то пытался сразиться с ним, но мне нужно было зайти слишком глубоко в внутренние подразделения SS, поэтому я отказался от этой идеи. Использование SS для фильтрации каналов, на мой взгляд, слишком много накладных расходов, в этом случае достаточно простого HttpFilter. –

+0

@lechlukasz: Я не совсем уверен, что вы ожидаете от меня. Можете ли вы написать подробное объяснение? Я попытался удалить все перехватчики и оставить только этот один: '<перехватывать-шаблон URL = '/ **' доступ = 'ROLE_ANONYMOUS, ROLE_CHANGE_PASS, ROLE_VIEWER, ROLE_USER, ROLE_ADMIN' />' но SS лечит пользователя как анонимный даже после аутентификации. – Mario

ответ

0

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

Если это так, и ваша страница входа в систему называется, скажем, login.html, все, что вы что нужно сделать, это настроить перехватчики, чтобы разрешить анонимный доступ к этому PAGE-

<intercept-url pattern="/**/login.*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
<intercept-url pattern="/gwt/**" access="ROLE_USER"/> 
<intercept-url pattern="/**/*.html" access="ROLE_USER"/> 

<intercept-url pattern="/css/**" filters="none"/> 
<intercept-url pattern="/**" access="ROLE_USER" /> 
1

в случае, если я правильно понял ваш вопрос в правильном пути у вас есть проблемы с двойной аутентификации, например, a Tomcat аутентификация или Apache Basic Auth и Весна механизм аутентификации.

Хотя последний проект я проблемы, связанный с Apache Basic Auth и пружинного механизмом безопасности. Перед запуском у меня была задача «защитить» доступ к сайту простым Apache Basic Auth. При включении этого в конфигурации ApacheSpring начали делать то же самое: «Spring Security Application» было показано, все время

Решение такого поведения должно было отключить автоматическое конфиг:

<security:http auto-config="false" ...> 
    ... 
</security:http> 
Смежные вопросы