Apache CXF: le message a expiré

Environnement:

  1. Apache CXF 2.7.8
  2. Jboss EAP 6
  3. SoapUI pour tester le côté client

J’ai essayé d’implémenter pour une authentification simple, c’est-à-dire avec un type de texte simple avec un mot de passe, cela fonctionne mais quand j’ai essayé de mettre en œuvre le type de mot de passe, en me donnant l’exception:

Dérouler maintenant: org.apache.cxf.binding.soap.SoapFault: Le message a expiré org.apache.ws.security.WSSecurityException: le message a expiré

Je donne une nouvelle valeur de nonce pour chaque demande et un délai de cinq minutes

Définition de la classe WSS4JInInterceptor Bean:

                    

Client xml request Code:

      joe PE7F51/oyWFVMsiZURuUwjoZVPY= <!--2013-12-17T13:12:00.429Z--> efPSkfHXTM6NFDDD1CJHsw== 2013-12-23T12:17:15Z         234  0908923 23423 1000     

Quand j’ai essayé d’appeler le service, je reçois une exception comme

    ns1:MessageExpired The message has expired    

Quelqu’un peut-il me dire où je me trompe?

Je suspecte que ce soit un bogue dans une version antérieure de wss4j. Si vous parsingz la date à l’aide de SimpleDateFormat, vous pouvez définir le fuseau horaire sur UTC (heure Zulu).

 sdf.setTimeZone("UTC"); 

Cela a cependant été corrigé dans la version 2.0-beta.

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.wss4j/wss4j-ws-security-dom/2.0-beta/org/apache/wss4j/dom/message/token/UsernameToken. java # 226

Edit: Ce n’est pas un bogue dans wss4j. La spécification indique que le fuseau horaire doit être en UTC.