Я создал службу WCF REST, и я пытаюсь выполнить пользовательскую аутентификацию (так как она должна работать на http и https).WCF REST Базовая аутентификация - не удается установить заголовок авторизации
Я использую диспетчер авторизации службы custome для проверки и проверки заголовка авторизации.
Когда я вызываю услугу с помощью Fiddler и передаю заголовок авторизации с запросом, я получаю его правильно в диспетчере авторизации службы.
Но когда я устанавливаю учетные данные в WCFChannelFactory, я не получаю заголовок авторизации в службе. Я ожидаю, что заголовок авторизации должен быть создан WCFChannelFactory и передан с запросом.
Клиентский код, как показано ниже: Конфигурация Service
WebChannelFactory<IDataService> factory = new WebChannelFactory<IDataService>("DataServiceClient1");
factory.Credentials.UserName.UserName = "user1";
factory.Credentials.UserName.Password = "password123";
var client = factory.CreateChannel();
var data = client.GetData1("Microsoft");
Console.WriteLine("Get response : {0}", data);
Client, как показано ниже:
<system.serviceModel>
<client>
<endpoint address="http://localhost.fiddler:50179/DataService.svc"
binding="webHttpBinding" bindingConfiguration="auth"
contract="RESTWebServiceSpike.IDataService"
behaviorConfiguration="web"
name="DataServiceClient1">
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="auth">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
Моя конфигурация службы, как показано ниже:
<services>
<service name="RESTWebServiceSpike.DataService" behaviorConfiguration="DataServiceBehaviour">
<endpoint address="" binding="webHttpBinding"
contract="RESTWebServiceSpike.IDataService" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DataServiceBehaviour">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
<serviceAuthorization serviceAuthorizationManagerType="RESTWebServiceImpl.AuthorizationManager, RESTWebServiceImpl" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
Я использую логотипо службы диспетчер авторизации для проверки и проверки заголовка авторизации.