@Методы защищенного обслуживания и spring ws
-
20-09-2019 - |
Вопрос
У меня есть следующая структура проекта:
базовый проект (уровень сервиса, модель) веб-проект проект веб-сервиса
где и веб-проект, и проект веб-сервиса зависят от базового проекта и используют предоставляемые им сервисы.
Я активно использую Spring Framework, что означает, что Сервисы являются Spring Beans с методами, защищенными @Обеспеченный Аннотация и Пружинная Защита.Я создал Избиратель расширение абстрактного сервера, который проверяет разрешения клиента.
Веб-проект использует Весенний MVC и проект веб-сервиса Пружина WS с аннотациями @Endpoint и XwsSecurityИнтерцептор.
Вот в чем моя проблема:
Разрешения проверяются, если вызов поступает от контроллера веб-проекта или в тестах JUnit базового проекта, но запросы из проекта веб-службы не проверяются на наличие правильного разрешения - my Избиратель это не называется!
- Имеет ли это какое-то отношение к XwsSecurityИнтерцептор?
- Нужен ли мне этот Делегирование filterproxy и в проекте веб-сервиса тоже?(У меня там нет ContextLoaderListener, потому что все настроено конфигурацией MessageDispatcherServlet)
Решение
Ваш объект аутентификации пользователя с заполненными предоставленными полномочиями доступен только в веб-контексте, а не в вашем проекте веб-служб.Когда вы выполняете вызов своего приложения веб-службы, у вас там нет такого же контекста безопасности.Так что ваши защитные метки там работать не будут.
Другие советы
Spring Security интегрируется в веб-приложение в виде фильтра сервлетов.Поэтому я бы предположил, что DelegatingFilterProxy необходимо будет добавить в web.xml для проекта веб-служб, чтобы он мог обрабатывать запросы, поступающие в это приложение.