Spring-WS уровень безопасности SecurityInterceptor
У меня есть сервис 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
могу ли я узнать, какая операция вызывается, чтобы я мог проверять, в зависимости от моих настроек, разрешать или нет выполнение определенной операции.
Или, может быть, у вас есть другие идеи.
Благодарю.
1 ответ
Нет стандартного способа сделать это.
Я создал еще один перехватчик (и поместил его первым в списке вызываемых перехватчиков), который сохранит текущую операцию, а затем, когда Spring попадет в мой перехватчик безопасности, я получу метод из bean-объекта области видимости запроса, созданного мой первый перехватчик