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-объекта области видимости запроса, созданного мой первый перехватчик

Другие вопросы по тегам