Веб-служба SOAP и Spring Security

Я пытаюсь защитить веб-службу SOAP с помощью Spring Security 3.

Это моя конфигурация:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myDB"
         expected-type="javax.sql.DataSource" />

<http authentication-manager-ref="authenticationManager">
     <intercept-url pattern="/**" access="ROLE_USER" requires-channel="https" />
     <http-basic />
     <logout logout-url="/logout" delete-cookies="JSESSIONID" />
</http>

<authentication-manager id="authenticationManager">
   <authentication-provider>
      <jdbc-user-service data-source-ref="dataSource" />
   </authentication-provider>
</authentication-manager>

Tomcat настроен для SSL, используется хранилище ключей, содержащее закрытый ключ сервера. Я тестирую веб-сервис с SOAPUI. Я создал запрос, который выполняет одну из операций, предоставляемых службой. В разделе Auth я добавил имя пользователя и пароль тестового пользователя в соответствии со значением, присутствующим в базе данных. После отправки запроса я ожидаю, что сеанс будет создан и повторная аутентификация не потребуется. В ответе HTTP присутствует файл cookie JSESSIONID. Когда веб-сайт защищен тем же механизмом, пользователь вводит свои учетные данные только один раз, пока не истечет срок его сеанса, когда ему потребуется повторная аутентификация.

Что не так с моим конфигом?


РЕДАКТИРОВАТЬ: я забыл добавить, что когда я повторно отправляю один и тот же запрос несколько раз, полученный файл cookie JSESSIONID всегда имеет другое значение. Должен ли я ожидать, что это будет то же самое для данного сеанса?


person Mickael Marrache    schedule 03.01.2013    source источник
comment
Правильно ли SoapUI отправляет файл cookie?   -  person artbristol    schedule 03.01.2013
comment
@artbristol Кажется, новый файл cookie JSESSIONID создается для каждого сообщения, отправляемого SOAPUI. Я не знаю почему.   -  person Mickael Marrache    schedule 04.01.2013
comment
Это связано с тем, что SoapUI не возвращает исходный файл cookie с каждым новым запросом.   -  person artbristol    schedule 04.01.2013


Ответы (1)


В разделе «Параметры TestCase» вам необходимо включить параметр «Поддерживать сеанс HTTP». К сожалению, вам придется делать это для каждого теста отдельно, глобальной опции для этого нет.

person SiKing    schedule 01.04.2015