2010-09-02 5 views
0

J'ai un service Spring-WS en utilisant PayloadRootAnnotationMethodEndpointMapping qui a plusieurs intercepteurs:opération Spring-WS SecurityInterceptor niveau

<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> 

Mon securityIntercetor est un intercepteur Wss4jSecurityInterceptor.

Tout fonctionne bien, sauf que le securityIntercetor est au niveau @Endpoint, je veux qu'il soit au @PayloadRoot (opération).

La façon dont j'authentifie les utilisateurs utilise UsernameToken, alors je vais contre LDAP et j'obtiens les rôles et selon le rôle que je veux autoriser/interdire à l'utilisateur d'exécuter une opération. Je suppose qu'il n'y a pas de solution prête à l'emploi pour cela. Donc, ma question est: comment puis-je obtenir quelle opération est appelée dans le securityIntercetor afin que je puisse vérifier en fonction de mes paramètres pour permettre ou non l'exécution d'une opération spécifique.

Ou peut-être avez-vous d'autres idées.

Merci.

Répondre

1

Il n'existe pas de méthode standard pour ce faire. Ce que j'ai fait, c'est que j'ai créé un autre intercepteur (et le plaçant en premier dans la liste des intercepteurs), ce qui sauverait l'opération en cours, et quand Spring atteindra mon intercepteur de sécurité, j'obtiendrai la méthode Cela a été créé par mon premier intercepteur.