J'ai des difficultés à me connecter à un service Web WSE 3.0 tiers à partir d'un client WCF. Je l'ai mis en œuvre la classe de liaison personnalisée comme indiqué dans cet article KB:Connexion à un service Web WSE 3.0 à partir d'un client WCF
http://msdn.microsoft.com/en-us/library/ms734745.aspx
Le problème semble avoir à voir avec l'affirmation de sécurité utilisé par le service Web - UsernameOverTransport.
Lorsque je tente d'appeler une méthode, je reçois l'exception suivante:
System.InvalidOperationException:. Le 'WseHttpBinding' '[namespace]' liaison pour le 'MyWebServiceSoap' '[. namespace] ' contrat est configuré avec un mode d'authentification qui nécessite intégrité du niveau de transport et la confidentialité . Cependant le transport ne peut pas assurer l'intégrité et la confidentialité ..
Il attend un nom d'utilisateur, mot de passe et le numéro CN. Dans l'exemple de code fourni par le fournisseur, ces informations d'identification sont regroupées dans un fichier Microsoft.Web.Services3.Security.Tokens.UsernameToken. Voici l'exemple fourni par le vendeur:
Cela fonctionne très bien à partir d'une application 2.0 w/WSE 3.0 installé. Voici un extrait du code de mon client WCF:
EndpointAddress address = new EndpointAddress(new Uri("<web service uri here>"));
WseHttpBinding binding = new WseHttpBinding(); // This is the custom binding I created per the MS KB article
binding.SecurityAssertion = WseSecurityAssertion.UsernameOverTransport;
binding.EstablishSecurityContext = false;
// Not sure about the value of either of these next two
binding.RequireDerivedKeys = true;
binding.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
MembershipServiceSoapClient proxy = new MembershipServiceSoapClient(binding, address);
// This is where I believe the problem lies – I can’t seem to properly setup the security credentials the web service is expecting
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "pwd";
// How do I supply the CN number?
MyObject mo = proxy.MyMethod(); // this throws the exception
J'ai écumé le web à la recherche d'une réponse à cette question. Certaines sources me rapproche (comme l'article MS KB), mais je n'arrive pas à surmonter la bosse. Est-ce que quelqu'un peut m'aider?
Pour être sûr, votre tiers sait-il que WSE est obsolète? –
Avez-vous été en mesure de résoudre ce problème? est-ce que quelqu'un a une idée? Je suis actuellement coincé sur la même chose. –