Bonjour, j'essaie de consommer un webservice accessible par le Protocol SOAP. J’ai ajouté une ServiceReference qui pointe sur le WSDL et générer les classes automatiquement avec Visual studio.
Le service utilise OASIS comme système d’authentification.
Le header doit contenir les informations de connexion sous la forme suivante :
Mon problème est la génération du namespase associé à UserNameToken .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken 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"> <wsse:Username></wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">monMonDePasse</wsse:Password> <wsse:Nonce>sdsdsdlojhfdsdM5Nw==</wsse:Nonce> <wsu:Created>2019-01-21T6:17:34Z</wsu:Created> </wsse:UsernameToken> </Security>
j'ajoute le Header "Security" avec le code suivant:
Quand j'intercepte le SOAP enveloppe généré par le Framework, le nameSpace associé à Security est bonne, mais celui associé à UserNameToken est du format : LeNomDeMonProjet.UserNameToken
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var UsernameToken = new UsernameToken{ Username = userName, Password = password, Nonce = nonce, Created = created }; Security security = new Security { UsernameToken =UsernameToken }; //Security est une classe custom que j'ai créé vu ainsi que UserNameToken System.ServiceModel.Channels.MessageHeader messageHeader = System.ServiceModel.Channels.MessageHeader.CreateHeader(name: "Security", ns: "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", value: security, mustUnderstand: true);
ce qui donne
Ma question est comment forcer le NameSpace à être
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <UsernameToken xmlns="http://schemas.datacontract.org/2004/07/ProjectName.UnitTesting"> //le nameSpace ici n'est pas le bon <Created>2019-01-21T06:42:15Z</Created> <Nonce>NzUyZg==</Nonce> <Password>MonUserName=</Password> <Username>MonPassword</Username> </UsernameToken>
aulieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
Solution testée sans succés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2"http://schemas.datacontract.org/2004/07/ProjectName.UnitTesting"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [XmlAttribute(Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]Merci de votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [DataContract(Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]
Partager