Настраиваемая аутентификация UserName/Password в IIS6
У меня есть служба WCF, которую я размещаю в IIS6. Я пытаюсь настроить пользовательскую аутентификацию по имени пользователя и паролю, используя безопасность на транспортном уровне. Я настроил тестовый сертификат и получил клиент для подключения по SSL без указанной аутентификации, а именно:
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
Я настроил пользовательский валидатор с защитой сообщений и типом учетных данных клиента "UserName", но теперь я хотел бы включить это в систему безопасности транспортного уровня. Когда у меня установлен 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 я изначально начал с включенной опции "Включить анонимный доступ". Я также попытался установить флажок "Обычная проверка подлинности (пароль отправляется открытым текстом)", но безуспешно.
1 ответ
Кажется, этот пост предполагает, что Basic доступен только для учетной записи Windows, со сторонним решением...
Базовая аутентификация с сервисом WCF REST для чего-то кроме учетных записей Windows?
Я был здесь сам, и в конечном итоге пошел с одноногим openauth, который работал хорошо.
редактировать этот пост отправил меня хорошо на моем пути к решению http://www.cleancode.co.nz/blog/523/oauth-dot-net
Стоит упомянуть разницу между OAuth с 1 и 2 ногами. 1-этап - это когда клиент и служба знают секрет клиента (пароль) для имени учетной записи клиента, который используется для шифрования и дешифрования запроса аутентификации (который все добавляется в строку запроса). с 2-мя ножками, это генерируется третьей стороной, такой как Google, Facebook и т. д.