Я хочу, чтобы клиент (который является сайтом asp.net) вызывал wcf.Оба размещены в IIS7 на моем ноутбуке.Для WCF я включил базовую аутентификацию в IIS7 и отключил все остальные.Для клиента я включил базовую аутентификацию и отключил все остальные параметры аутентификации.
Проблема в том, что с этими конфигами ниже клиент не получает никаких данных от wcf.
Если яв браузере перейдите к сервису, указав URL-адрес сервиса, затем я должен ввести имя пользователя / пароль в всплывающей форме.
Что я хочу сделать, так это защитить свой wcf по имени пользователя и паролю, чтобычто любой, кто хочет вызвать мой wcf, должен предоставить имя пользователя / пароль и мой код wcf, чтобы проверить, существуют ли они (например, в AD) и, соответственно, аутентифицируются.
мой клиент (простой веб-сайт ASP.net, вызывающийWCF) web.config:
<configuration>
<appSettings>
<add key="userName" value="Administrator"/>
<add key="password" value="pass"/>
<!--<add key="url" value="http://localhost:57895/ListData.svc"/>-->
<!--http://localhost/WCF/-->
<add key="url" value="http://localhost:8082/ListData.svc"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Мой сервис WCF web.config:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="Logging" value="true"/>
</appSettings>
<connectionStrings/>
<system.web>
<authentication mode="Windows"></authentication>
<compilation debug="true" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="httpBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
<!--<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</webHttpBinding>-->
</bindings>
<services>
<service behaviorConfiguration="SecureRESTSvcTestBehavior" name="Hdir.ListData">
<!--<host>
<baseAddresses>
<add baseAddress="http://localhost:57895/ListData/"/>
</baseAddresses>
</host>-->
<!--webHttpBinding allows exposing service methods in a RESTful manner-->
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="httpBinding" behaviorConfiguration="webHttpBehavior" contract="Hdir.IListData"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<!--<behavior name=" ">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>-->
<behavior name="SecureRESTSvcTestBehavior">
<!-- To avoid disclosing metadata information, set the value below to
false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true.
Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceAuthorization serviceAuthorizationManagerType="Hdir.CustomAuthorizationManager, Hdir"/>
<!--<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Hdir.Hp.Data.CustomUserNameValidator, Hdir.Hp.Data" />
</serviceCredentials>-->
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<!--<webHttp/>-->
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with"/>
<add name="Access-Control-Request-Method" value="GET"/>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>