@ Защищенные методы обслуживания и весна ws - PullRequest
0 голосов
/ 12 октября 2009

У меня следующая структура проекта:

базовый проект (сервисный слой, модель) веб-проект проект веб-сервиса

где веб-проект и проект веб-службы зависят от базового проекта и используют предоставляемые им службы.

Я активно использую Spring Framework, что означает, что Сервисы - это Spring Beans с методами, защищенными аннотациями @ Secured и Spring Security . Я создал Voter , расширяющий AbstractAclVoter, который проверяет клиентские разрешения.

В веб-проекте используется Spring MVC и проект веб-службы Spring WS с аннотациями @Endpoint и XwsSecurityInterceptor .

Вот моя проблема:

Разрешения проверяются, если вызов поступает от контроллера веб-проекта или в тестах JUnit базового проекта, но запросы от проекта веб-службы не проверяются на правильное разрешение - мой Voter не вызывается !

  • Это как-то связано с XwsSecurityInterceptor ?
  • Нужен ли DelegatingFilterProxy в проекте веб-службы? (Я имею там нет ContextLoaderListener, потому что все настроено конфиг MessageDispatcherServlet)

Ответы [ 2 ]

1 голос
/ 15 октября 2009

Ваш объект аутентификации пользователя с заполненным предоставленным полномочием доступен только в веб-контексте, а не в вашем проекте веб-служб. Когда вы звоните в приложение веб-службы, у вас там не тот же контекст безопасности. Таким образом, ваши теги безопасности не будут работать там.

0 голосов
/ 13 октября 2009

Spring Security интегрируется как фильтр сервлетов в веб-приложение. Поэтому я предполагаю, что для проекта веб-служб необходимо добавить DelegatingFilterProxy в файл web.xml, чтобы он мог обрабатывать запросы, поступающие в это приложение.

...