Ho un servizio SOAP WCF che utilizza l'autenticazione di accesso di base. SSL non viene utilizzato - Capisco i problemi di sicurezza qui.Come utilizzare un riferimento di servizio con un'autenticazione di base Servizio SOAP WCF
Utilizzo dell'applicazione WCFTestClient Ho verificato che il servizio funziona temporaneamente codificando nel servizio un nome utente e una password da utilizzare quando l'intestazione Authorization
non è presente.
Sto provando ora a scrivere un'applicazione di test che trasmette le credenziali tramite l'intestazione Authorization
. Ho aggiunto un riferimento di servizio al mio servizio nella mia app di test, ma l'intestazione Authorization
non è presente nella richiesta http. Il generato MyServiceClient
classe utilizza System.ServiceModel.ClientBase
Nella mia prova app io pongo le credenziali come segue
MyServiceClient client = new MyServiceClient("BasicHttpBinding_MyService");
client.ClientCredentials.UserName.UserName = "WebServiceUsername";
client.ClientCredentials.UserName.Password = "WebServicepassword";
Ho anche provato la seguente
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);
Il web.config del servizio è la seguente
<services>
<service name="MyService" behaviorConfiguration="MyBehavior" >
<endpoint contract="MyService" binding="basicHttpBinding" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
Il test app.config è come follo 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>
Qualche idea su cosa mi manca?
puoi mostrare un xml campione che deve essere inviato? –
Non sono sicuro di come ciò possa essere d'aiuto poiché utilizzo l'autenticazione di base. WCF sta trasmettendo tutta la serializzazione da e verso XML, non l'ho mai generata. Posso provare a ottenere una discarica da WireShark se pensi che ti possa aiutare. –
È il tuo servizio o stai cercando di inviare SOAP al servizio di qualcun altro? –