Вопрос

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

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

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

Я активно использую Spring Framework, что означает, что Сервисы являются Spring Beans с методами, защищенными @Обеспеченный Аннотация и Пружинная Защита.Я создал Избиратель расширение абстрактного сервера, который проверяет разрешения клиента.

Веб-проект использует Весенний MVC и проект веб-сервиса Пружина WS с аннотациями @Endpoint и XwsSecurityИнтерцептор.

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

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

  • Имеет ли это какое-то отношение к XwsSecurityИнтерцептор?
  • Нужен ли мне этот Делегирование filterproxy и в проекте веб-сервиса тоже?(У меня там нет ContextLoaderListener, потому что все настроено конфигурацией MessageDispatcherServlet)
Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top