Служба автономного размещения WCF SSL / транспортная безопасность / обычная проверка подлинности не запрашивает учетные данные - PullRequest
2 голосов
/ 14 мая 2011

Я создал автономный сервис WCF с HTTPS / SSL, безопасностью транспорта и обычной аутентификацией.По какой-то причине, когда я запускаю сервис в браузере, он никогда не запрашивает учетные данные.Что не так?

Конфигурация службы:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WsHttpTest.GreetingServiceBehavior">
          <serviceMetadata httpsGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportSecurity">
          <security mode="Transport">
            <transport clientCredentialType="Basic"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="WsHttpTest.GreetingServiceBehavior" name="WsHttpTest.GreetingService">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:8555/WsHttpTest/Greeting" />
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurity" contract="WsHttpTest.IGreetingService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

Конфигурация HTTP:

C:\>httpcfg query ssl
    IP                      : 0.0.0.0:8555
    Hash                    : 14ae237add3c49 a5091367487563cf6f6a8f586
    Guid                    : {9416496a-6d3e-4680-a9d1-03defd97d7d6}
    CertStoreName           : MY
    CertCheckMode           : 0
    RevocationFreshnessTime : 0
    UrlRetrievalTimeout     : 0
    SslCtlIdentifier        :
    SslCtlStoreName         :
    Flags                   : 0
------------------------------------------------------------------------------
C:\>httpcfg query urlacl
    URL : https://localhost:8555/WsHttpTest/Greeting/
    ACL : D:(A;;GX;;;WD)
------------------------------------------------------------------------------

1 Ответ

2 голосов
/ 14 мая 2011

Конфигурация wsHttpBinding используется только в том случае, если вы взаимодействуете с конечной точкой = вы создаете прокси и операцию вызова, указанную в контракте на обслуживание.При открытии страницы справки службы вы не общаетесь с конечной точкой.

ServiceMetadataBehavior также предлагает два дополнительных свойства HttpsHelpPageBinding и HttpsHelpPageBindingConfiguration.Возможно, если вы поиграете с этими свойствами и настроите какое-либо настраиваемое связывание (должно быть настраиваемым, поскольку для них требуется MessageVersion.None), вы сможете заставить страницу справки также требовать аутентификацию, но я никогда не пробовал.

Я бы начал с чего-то вроде:

<bindings>
  <cutstomBinding>
    <binding name="helpPage">
      <textMessageEncoding messageVersion="None" />
      <httpsTransport authenticationScheme="Basic" />
    </binding>
  </customBinding>
</bindings>
...