У меня есть служба WCF SOAP, которая использует базовую аутентификацию доступа.SSL не используется - я понимаю проблемы безопасности здесь.
Используя приложение WCFTestClient, я проверил, работает ли служба, временно жестко запрограммировав в службу имя пользователя и пароль, чтобы использовать, когда заголовок Authorization
отсутствует.
Я сейчас пытаюсь написать тестовое приложение, которое передает учетные данные через заголовок Authorization
.Я добавил ссылку на службу в свою тестовую программу, но заголовок Authorization
отсутствует в запросе http.Сгенерированный MyServiceClient
класс использует System.ServiceModel.ClientBase
В моем тестовом приложении я устанавливаю учетные данные следующим образом
MyServiceClient client = new MyServiceClient("BasicHttpBinding_MyService");
client.ClientCredentials.UserName.UserName = "WebServiceUsername";
client.ClientCredentials.UserName.Password = "WebServicepassword";
Я также попытался выполнить следующее
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);
Служба web.config выглядит следующим образом
<services>
<service name="MyService" behaviorConfiguration="MyBehavior" >
<endpoint contract="MyService" binding="basicHttpBinding" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
Тест app.config выглядит следующим образом
<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>
Есть мысли о том, что мне не хватает?