he creado un proxy de un Servicio Web con Visual Studio 2008, y creó para mí la siguiente entrada en el app.config:Conectar con WCF para un servicio web autenticado con nombre de usuario/contraseña
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyNameHandlerSoapBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.***/***/***"
binding="basicHttpBinding" bindingConfiguration="MyNameHandlerSoapBinding"
contract="***.MyNameHandler" name="MyName">
</endpoint>
</client>
</system.serviceModel>
El servicio web tiene autenticación de nombre de usuario/contraseña, así que necesito agregarla en algún lugar aquí.
Estoy un poco perdido en el mar de la documentación de WCF, creo que tengo que cambiar de basicHttpBinding a wsHttpBinding o CustomBinding para poder agregar los elementos de autenticación, pero realmente no lo entiendo. ¿Alguien podría dar algún consejo rápido o algún enlace útil que diga cómo hacerlo?
EDIT:
He cambiado la sección de seguridad a:
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
y se añaden en el código:
ws.ClientCredentials.UserName.UserName = "";
ws.ClientCredentials.UserName.Password = "";
ahora parece que podría estar utilizando las credenciales pero es dándome el error:
el esquema URI proporcionado 'http' es URI no válido espera 'https'
Ni siquiera sé si este es el camino correcto a seguir ...
WCF es la configuración del infierno. ¿Qué tienda de autenticación quieres usar? Windows ... ¿Membresía ASP o personalizada como una base de datos? Y ha mirado a través de esto: http://msdn.microsoft.com/en-us/library/bb398990.aspx –
De hecho. Es un servicio web externo que tiene un nombre de usuario/contraseña único para usar siempre para todas mis llamadas. Y es http. ¡Así que supongo que podría ser más una autorización de punto final, si eso tiene sentido! – antonioh
Al principio está molestando que no se pueda especificar el nombre de usuario y la contraseña en cualquier lugar de la configuración (pero solo en el código). De nuevo, ¿le gustaría tener su contraseña en un archivo de configuración de texto claro? ¿DE VERDAD? –