Настраиваемая аутентификация 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 и т. д.

Другие вопросы по тегам