ho creato un proxy di un Servizio Web con Visual Studio 2008, e ha creato per me la seguente voce nel app.config:Connettiti con WCF per un webservice autenticato con username/password
<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>
Il webservice ha l'autenticazione username/password, quindi ho bisogno di aggiungerlo da qualche parte qui.
Sono un po 'perso nel mare della documentazione WCF, penso di dover passare da basicHttpBinding a wsHttpBinding o customBinding per poter aggiungere gli elementi di autenticazione, ma non lo capisco davvero. Qualcuno potrebbe dare qualche suggerimento o qualche link utile che dice come farlo?
EDIT:
ho cambiato la sezione sicurezza:
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
e aggiunto nel codice:
ws.ClientCredentials.UserName.UserName = "";
ws.ClientCredentials.UserName.Password = "";
ora sembra che potrebbe essere utilizzando le credenziali, ma è dandomi l'errore:
lo schema URI fornito 'http' è URI non validi previsto 'https'
io non so nemmeno se questo è il modo giusto per andare ...
WCF è l'inferno configurazione. Quale auth store vuoi usare? Windows ... appartenenza ASP o personalizzata come un database? E hai guardato attraverso questo: http://msdn.microsoft.com/en-us/library/bb398990.aspx –
Infatti. Si tratta di un servizio Web esterno con un nome utente/password univoco da utilizzare sempre per tutte le mie chiamate. Ed è http. Quindi immagino che potrebbe essere più di un'autorizzazione di un endpoint, se questo ha senso! – antonioh
All'inizio non è possibile specificare il nome utente e la password ovunque nella configurazione (ma solo nel codice) - quindi, di nuovo, si vorrebbe avere la password in un file di configurazione in chiaro? VERAMENTE? –