Spring-WS SecurityInterceptor уровень работы - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть служба 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 Ответ

1 голос
/ 23 марта 2011

Нет стандартного способа сделать это.

Я создал еще один перехватчик (и поместил его первым в списке вызываемых перехватчиков), который сохранит текущую операцию, а затем, когда Spring попадет в мой перехватчик безопасности, я получу метод из bean-объекта области действия запроса, который был создан моим первым перехватчиком.

...