Tengo un servicio WCF SOAP que usa autenticación de acceso básico. No se usa SSL: entiendo los problemas de seguridad aquí.Cómo usar una referencia de servicio con una autenticación básica WCF SOAP Service
Utilizando la aplicación WCFTestClient he verificado que el servicio funciona mediante la codificación temporal en el servicio de un nombre de usuario y contraseña para usar cuando el encabezado Authorization
no está presente.
Ahora estoy tratando de escribir una aplicación de prueba que pase las credenciales a través del encabezado Authorization
. Agregué una referencia de servicio a mi servicio en mi aplicación de prueba, pero el encabezado Authorization
no está presente en la solicitud http. El MyServiceClient
clase generada utiliza System.ServiceModel.ClientBase
En mi aplicación de prueba estoy fijando las credenciales de la siguiente manera
MyServiceClient client = new MyServiceClient("BasicHttpBinding_MyService");
client.ClientCredentials.UserName.UserName = "WebServiceUsername";
client.ClientCredentials.UserName.Password = "WebServicepassword";
También he tratado de la siguiente manera
MyServiceClient client = new MyServiceClient();
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = "WebServiceUsername";
loginCredentials.UserName.Password = "WebServicepassword";
client.Endpoint.Behaviors.Remove(client.Endpoint.Behaviors.Find<ClientCredentials>());
client.Endpoint.Behaviors.Add(loginCredentials);
el web.config servicio es el siguiente
<services>
<service name="MyService" behaviorConfiguration="MyBehavior" >
<endpoint contract="MyService" binding="basicHttpBinding" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
The test app.config es como sigue ws
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyService">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:55314/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService"
contract="MyService" name="BasicHttpBinding_MyService" />
</client>
</system.serviceModel>
</configuration>
¿Alguna idea de lo que me falta?
¿puede mostrar la muestra xml que debe enviarse? –
No estoy seguro de cómo esto podría ayudar, ya que estoy usando la autenticación básica. WCF está entregando toda la serialización hacia y desde XML, nunca la genero. Puedo intentar obtener un archivo de WireShark si crees que podrías ayudar. –
¿Es su servicio o está intentando enviar SOAP al servicio de otra persona? –