Spring-WS SecurityInterceptor Уровень работы
-
26-09-2019 - |
Вопрос
У меня есть сервис Spring-WS, используя PayloadRootAnnotationMethodEndpointMapping
У этого есть несколько перехватчиков:
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="interceptors">
<list>
<ref local="loggingInterceptor"/>
<ref local="validatingInterceptor"/>
<ref local="securityInterceptor"/>
</list>
</property>
</bean>
Мой securityIntercetor
это Wss4jSecurityInterceptor
перехватчик.
Все работает нормально, за исключением того, что securityIntercetor
находится в @Endpoint
уровень, я хочу, чтобы это было на @PayloadRoot
(Операция).
То, как я аутентифицирую пользователей, использует UsernameToken
, Затем я еду против LDAP и получаю роли и в зависимости от роли, которую я хочу разрешить / запретить пользователю выполнить операцию.
Я предполагаю, что нет не из раствора коробки для этого.
Итак, мой вопрос: как в securityIntercetor
Могу ли я получить, какую операцию называется, чтобы я мог проверить в зависимости от моих настроек, чтобы разрешить или не выполнить определенную операцию.
Или, может быть, у вас есть другие идеи.
Спасибо.
Решение
Там нет стандартного способа сделать это.
То, что я сделал, я создал еще один перехватчик (и сначала размещаю его в списке вызовов перехвата), что бы сохранить текущую операцию, а затем, когда пружина попадает в мою перехватчик безопасности, я получу метод из запроса на вынос, который был создан Мой первый перехватчик.