WCF REST 서비스를 만들었으며 사용자 정의 인증을하려고합니다 (http 및 https에서 작동해야 함).WCF REST 기본 인증 - 인증 헤더를 설정할 수 없습니다.
저는 Custome 서비스 인증 관리자를 사용하여 인증 헤더를 확인하고 유효성을 검사합니다.
Fiddler를 사용하여 서비스를 호출하고 Authorization 헤더를 요청과 함께 전달할 때 서비스 인증 관리자에서 올바르게 수신하고 있습니다.
그러나 WCFChannelFactory에서 자격 증명을 설정할 때 서비스의 Authorization 헤더를받지 못했습니다. 권한 헤더는 WCFChannelFactory에 의해 작성되어 요청과 함께 전달되어야합니다.
클라이언트 코드는 다음과 같습니다 :
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);
클라이언트 서비스 구성은 다음과 같습니다 :
<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>
내가 손님 서비스를 사용하고 있습니다 권한 부여 관리자는 권한 헤더를 점검하고 유효성을 검증합니다.