Tengo dificultades para conectarme a un servicio web WSE 3.0 de un cliente de WCF. He implementado la clase personalizada de unión como se indica en este artículo KB:Conexión a un servicio web WSE 3.0 desde un cliente WCF
http://msdn.microsoft.com/en-us/library/ms734745.aspx
El problema parece que tiene que ver con la afirmación de seguridad utilizado por el servicio web - UsernameOverTransport.
Cuando intento llamar a un método, me sale el siguiente excepción:
System.InvalidOperationException:. El 'WseHttpBinding' '[espacio de nombres]' vinculante para la 'MyWebServiceSoap' '[. espacio de nombres] ' contrato está configurado con un modo de autenticación que requiere integridad de nivel de transporte y confidencialidad. Sin embargo, el transporte no puede proporcionar integridad y confidencialidad ..
Se esperaba un nombre de usuario, contraseña y número de CN. En el código de ejemplo que nos proporciona el proveedor, estas credenciales se incluyen en un Microsoft.Web.Services3.Security.Tokens.UsernameToken. Aquí está el ejemplo suministrado por el proveedor:
Esto funciona bien desde una aplicación de 2,0 w / WSE 3.0 instalado. Aquí hay un fragmento del código de mi cliente 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
He rastreado la web en busca de una respuesta a esta pregunta. Algunas fuentes me acercan (como el artículo de MS KB), pero parece que no puedo superar el problema. ¿Alguien me puede ayudar?
Solo para asegurarse, ¿su tercero sabe que WSE está obsoleto? –
¿Has sido capaz de resolver esto? ¿Alguien tiene alguna idea? Actualmente estoy estancado en lo mismo. –