IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring 4 Wss4jSecurityInterceptor [Security]


Sujet :

Spring Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 58
    Points
    58
    Par défaut Spring 4 Wss4jSecurityInterceptor
    Bonjour,

    je souhaiterais consommer un web service sécurisé avec spring. Voici la configuration de mon client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    @Configurable
    public class WebServiceConfig {
     
        /** Environment env */
        @Autowired
        private Environment env;
     
        /**
         * déclaration du web service
         * 
         * @return WebServiceTemplate
         * @throws SOAPException
         */
        @Bean
        public WebServiceTemplate processDeclarationTemplate() {
            WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
            webServiceTemplate.setDefaultUri(env.getProperty("webServiceURL"));
            webServiceTemplate.setMarshaller(marshaller());
            webServiceTemplate.setUnmarshaller(marshaller());
            webServiceTemplate.setInterceptors(new ClientInterceptor[] { new ProcessDeclarationInterceptor(), securityInterceptor() });
            return webServiceTemplate;
        }
     
        /**
         * Definition du Marshaller/Unmarshaller
         * 
         * @return Jaxb2Marshaller
         */
        @Bean
        public Jaxb2Marshaller marshaller() {
            Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
            marshaller.setContextPath("fr.integrate.ws.schema");
            return marshaller;
        }
     
        /**
         * securityInterceptor
         *
         * @return Wss4jSecurityInterceptor
         */
        @Bean
        public Wss4jSecurityInterceptor securityInterceptor() {
            Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor();
            securityInterceptor.setValidationActions(env.getProperty("validationActions", "UsernameToken"));
            securityInterceptor.setSecurementPasswordType(env.getProperty("securementPasswordType", "PasswordText"));
     
            securityInterceptor.setValidateRequest(env.getProperty("validateRequest", Boolean.class, true));
            securityInterceptor.setValidateResponse(env.getProperty("validateResponse", Boolean.class, false));
            securityInterceptor.setSecureRequest(env.getProperty("secureRequest", Boolean.class, true));
            securityInterceptor.setSecureResponse(env.getProperty("secureResponse", Boolean.class, false));
     
            securityInterceptor.setSecurementUsername(env.getProperty("webservices.authentication.security.user.name"));
            securityInterceptor.setSecurementPassword(env.getProperty("webservices.authentication.security.user.password"));
     
            securityInterceptor.setValidationCallbackHandler(callbackHandler());
            return securityInterceptor;
        }
     
        @Bean
        public CallbackHandler callbackHandler() {
            Properties props = new Properties();
            props.setProperty(env.getProperty("webservices.authentication.security.user.name"), env.getProperty("webservices.authentication.security.user.password"));
     
            SimplePasswordValidationCallbackHandler callbackHandler = new SimplePasswordValidationCallbackHandler();
            callbackHandler.setUsers(props);
            return callbackHandler;
        }
    }
    et le service qui appel le web service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    @Service
    public class WebServiceImpl implements WebService {
     
        /** Logger LOGGER */
        private static final Logger LOGGER = LoggerFactory.getLogger(WebServiceImpl .class);
     
        @Autowired
        @Qualifier("webServiceTemplate")
        private WebServiceOperations webServiceTemplate;
     
        ...
     
        @Override
        public Response callWebService(String _id) {
            Request request = this.getRequest (_id);
     
            Response response = null;
            try {
                LOGGER.info("Appel du web service avec l'id : {}", id);
                response = (Response) this.webServiceTemplate.marshalSendAndReceive(request);
            } catch (WebServiceException e1) {
                LOGGER.error(e1.getMessage(), e1);
            }
            return response;
        }
    Mon soucis est que ma requête n'est pas sécurisé et le header reste vide... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    16:13:54.215 [SimpleAsyncTaskExecutor-1] ERROR f.i.s.WebServiceImpl - No WS-Security header found
    org.springframework.ws.soap.client.SoapFaultClientException: No WS-Security header found
    Quelqu'un aurait une idée? Merci :-)

  2. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Personne pour une petite idée ?? :-)

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Il ne me manquait juste la définition du securementActions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    securityInterceptor.setSecurementActions(env.getProperty("securementActions", "UsernameToken"));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Hibernate][Spring] Session Hibernate initialisée
    Par mauvais_karma dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/08/2005, 13h07
  2. [Débutant][Framework] Spring vs Struts vs JSF
    Par Saloucious dans le forum JSF
    Réponses: 2
    Dernier message: 13/07/2005, 09h42
  3. Réponses: 5
    Dernier message: 25/05/2005, 21h16
  4. [Data] Développement avec la framework spring et ibatis
    Par ujoodha dans le forum Spring
    Réponses: 1
    Dernier message: 07/03/2005, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo