2015-10-01 2 views
0

У меня есть веб-приложение, использующее Spring Security для аутентификации. ЭТО БЫЛО РАБОЧЕГО ИЗМЕНЕНИЯ в Tomcat 6. Мне пришлось развернуть его на Tomcat 7 по мере изменения бизнес-требований и теперь не работает.Spring Security - плохие учетные данные при развертывании от Tomcat 6 до Tomcat 7

пружинно-security.xml (для простоты я изменил запрос)

<form-login login-page="/redirect" 
     login-processing-url="/submitLogin" 
     username-parameter="j_username" 
     password-parameter="j_password" 
     authentication-failure-handler-ref="loginFailureHandler" 
     authentication-success-handler-ref="loginSuccessHandler" /> 

<authentication-manager> 
    <authentication-provider> 
     <jdbc-user-service 
      data-source-ref="sybaseDataSource" 
      users-by-username-query="SELECT distinct EnterpriseID as username, 'password' as password, 1 as enabled FROM users where id = ?" 
      authorities-by-username-query="SELECT ? as id, 'ROLE_USER' as authority" 
      <!-- I know, it shouldnt be like this, just for the sake of the user having an authority --> 
     /> 
    </authentication-provider> 
</authentication-manager> 

форму из JSP: (Это на самом деле перенаправление, в котором пользователя и пароль заполняются и форма представлена ​​с использованием JavaScript (JQuery)

   <form method="POST" action="/submitLogin" id="login-form-sso"> 

       <input type="text" name='j_username' value="${user}"/> 
       <input type="text" name='j_password' value="password"/> 
      </form> 

     $(document).ready(function(){ 
     $("#login-form-sso").submit(); 
    }); 

при развертывании в Tomcat 7, ВСЕГДА идут к loginFailureHandler. После отладки, я замечаю, что имя пользователя не «видит» Спринг безопасности, пытаясь запросить с пользователем «»

Опять же, это отлично работает в Tomcat 6. Я также проверил форму JSP и содержали учетные данные, по какой-то причине, это выглядит как Spring безопасность не может найти его.

Может ли кто-нибудь указать мне направление вправо? Я ценю ваши материалы. Спасибо

ОБНОВЛЕНИЕ: Я думаю, что одним из фильтров в цепочке фильтров является преступник, потребляющий параметры из тела запроса. будет исследовать далее.

+0

Какая версия Spring-security? У вас есть спящий режим? –

+0

spring-security 3.2.2, плитки 2.2.2. нет спящего режима. – jmcg

+0

У меня есть код XML, который будет ссылаться на файл Java, и там вы можете написать свой метод findByUsername (String email). Это может быть полезно для вас. Это будет полезно, если у вас есть спящий режим, так как для этого требуется объект User. Если ты этого хочешь, дайте мне знать. –

ответ

1

после дней google-ing, болезненной отладки, создания настраиваемых фильтров и конфигурации tomcat, я замечаю, что ВСЕ мои формы не работают, а мои контроллеры получают значения NULL.

Я попробовал другую версию Tomcat (у меня есть apache-tomcat-7.0.64 и загружен apache-tomcat-7.0.47), и он РАБОТАЕТ.

Проблема решена. Работа сохранена.

1

Мы испытали такое же странное поведение. Мы не получили ничего, кроме нулевых значений из наших форм.

Оказалось, что произошла смена интерпретации параметра maxPostSize в конфигурации коннектора в файле server.xml. От Tomcat Version 7.0.63 вверх maxPostSize = "0" действительно интерпретируется как максимальный размер загрузок нулевого байта. До версии 7.0.63 maxPostSize = "0" означало бесконечную максимальную постсоциализацию. Установка maxPostSize = "- 1" разрешила проблему в нашем случае.

Возможно, этот ответ может помочь кому-то ...

+0

Очень полезный пост. Большое спасибо. Вы спасли мне жизнь: P – KayV

Смежные вопросы