2011-09-14 1 views
6

J'essaie d'appeler un service Web Java à partir d'une application Web MVC3 .NET à l'aide de WSE 3.0. Toutefois, le service Web requiert un attribut "EncodingType" sur l'élément Nonce du nom d'utilisateur. Voici une enveloppe SOAP exemple qui fonctionne correctement avec ce service Web Java:Comment ajouter un attribut EncodingType à l'élément Nonce d'un nom d'utilisateurToken dans WSE 3.0 (.NET)

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v1="http://schema.mydomain.org/sms/v1_0"> 
    <soap:Header> 
    <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <wsse:Username>myUsername</wsse:Username> 
     <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password> 
     <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">XQkp6oYc3DRv41cxkSTW8w==</wsse:Nonce> 
     <wsu:Created>2011-09-13T20:50:08.355Z</wsu:Created> 
     </wsse:UsernameToken> 
    </wsse:Security> 
    </soap:Header> 
    <soap:Body> 
     <v1:ping/> 
    </soap:Body> 
</soap:Envelope> 

Suite est l'enveloppe SOAP générée à partir du proxy qui VS2010 produit (capturé dans Fiddler):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
    <wsse:Security env:mustUnderstand="true"> 
     <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-111f922b-72c1-4057-bce4-f6555552ce6a"> 
     <wsse:Username>myUsername</wsse:Username> 
     <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password> 
     <wsse:Nonce>qYse3Lor9sAJ9pKPefgkKQ==</wsse:Nonce> 
     <wsu:Created>2011-09-13T20:50:38Z</wsu:Created> 
     </wsse:UsernameToken> 
    </wsse:Security> 
    </env:Header> 
    <soap:Body> 
     <v1:ping/> 
    </soap:Body> 
</soap:Envelope> 

Si cet attribut est manquant, ce service Web renvoie "Un jeton de sécurité non valide a été fourni (Une erreur s'est produite lors du traitement d'un jeton de nom d'utilisateur)"

Comment ajouter un attribut EncodingType?

Répondre

2

je trouve une solution acceptable ...

Le drapeau EncodingType est selon le nom d'utilisateur et WSSE jeton de sécurité Spec 1.1, qui est la spécification requise par la version du framework Apache CXF que ce service Java Web est en utilisant. .NET ne répond pas à cette spécification. Heureusement, il y avait un drapeau dans CXF pour désactiver l'exigence. Nous l'avons fait et sommes maintenant en mesure de communiquer.

+0

Bonjour, j'ai ce problème. Agréable de savoir qu'il y a un drapeau, ce serait plus agréable si vous mentionniez également quel drapeau, maintenant je dois encore regarder. – toongeorges

3

J'ai trouvé que définir "isBSPCompliant" en tant que propriété jaxws sur mon point de terminaison à "false" résout les problèmes EncodingType. Était-ce la solution que vous avez trouvée aussi?

+0

Cela a fait l'affaire pour moi: AtliB

Questions connexes