У меня есть служба WCF, которую я размещаю в IIS6. Я пытаюсь настроить пользовательскую аутентификацию по имени пользователя и паролю с использованием безопасности транспортного уровня. Я установил тестовый сертификат и получил клиент для подключения через SSL без указания аутентификации, то есть:
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
Я установил настраиваемый валидатор с безопасностью сообщений и типом учетных данных клиента «Имя пользователя», но сейчас я хотел бы включить его в безопасность транспортного уровня. Когда у меня установлен файл web.config, когда я пытаюсь просмотреть WSDL, я получаю сообщение об ошибке: «Параметры безопасности для этой службы требуют« базовой »аутентификации, но она не включена для приложения IIS, в котором размещена эта служба».
Вот важные части моего файла web.config:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="UserNameBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceAuthenticationBehavior"
name="Service.WebServices.MyService">
<endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration=""
name="mexBinding" contract="IMetadataExchange" />
<endpoint binding="wsHttpBinding" bindingConfiguration="UserNameBinding"
name="wsHttpBindingWithAuth" contract="Service.WebServices.IMyService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceAuthenticationBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<serviceCertificate findValue="TestCert01" storeLocation="LocalMachine"
storeName="TrustedPeople" x509FindType="FindBySubjectName" />
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="Service.WebServices.ClientCredentialsValidator, Service.WebServices" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Есть ли что-то, что я должен установить в IIS6, чтобы включить это? В IIS я сначала начал с включенной опцией «Разрешить анонимный доступ». Я также попытался установить флажок «Обычная проверка подлинности (пароль отправляется открытым текстом)», но безуспешно.