2

HTTPS / SSL、トランスポートセキュリティ、および基本認証を使用して、セルフホストのWCFサービスを作成しました。何らかの理由で、ブラウザでサービスを実行すると、クレデンシャルを要求されません。どうしたの?

サービス構成:

<?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)
------------------------------------------------------------------------------
4

1 に答える 1

2

の構成はwsHttpBinding、エンドポイントと通信する場合にのみ使用されます = プロキシを作成し、サービス コントラクトで公開されている操作を呼び出します。サービスのヘルプ ページを開くときに、エンドポイントと通信しません。

ServiceMetadataBehaviorまた、 との 2 つの追加プロパティも提供しHttpsHelpPageBindingますHttpsHelpPageBindingConfiguration。おそらく、これらのプロパティをいじってカスタム バインディングを設定すると (必要なのでカスタムにする必要がありますMessageVersion.None)、ヘルプ ページで強制的に認証を要求することもできますが、試したことはありません。

私は次のようなものから始めます:

<bindings>
  <cutstomBinding>
    <binding name="helpPage">
      <textMessageEncoding messageVersion="None" />
      <httpsTransport authenticationScheme="Basic" />
    </binding>
  </customBinding>
</bindings>
于 2011-05-14T08:55:16.793 に答える