如何在IIS中只使用basichttpbinding,SSL和基本身份验证来使用WCF?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (51)

是否有可能在IIS中使用BasicHttpBinding绑定设置一个WCF服务与SSL和基本身份验证?

该站点位于IIS 7上,并设置了以下身份验证:

   - Anonymous access: off
   - Basic authentication: on
   - Integrated Windows authentication: off !!

服务配置:

<services>
  <service name="NameSpace.SomeService">
    <host>
      <baseAddresses>
        <add baseAddress="https://hostname/SomeService/" />
      </baseAddresses>

    </host>
    <!-- Service Endpoints -->
    <endpoint address="" binding="basicHttpBinding"
              bindingNamespace="http://hostname/SomeMethodName/1"
              contract="NameSpace.ISomeInterfaceService"
              name="Default"
                      />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <exceptionShielding/>
    </behavior>
  </serviceBehaviors>
</behaviors>
提问于
用户回答回答于

在这种情况下有两个方面的安全性。IIS安全性和WCF安全性。

IIS安全性:启用S​​SL并启用基本身份验证。禁用匿名身份验证。(当然,创建一个Windows帐户/组,并在IIS中设置你的应用程序的权限。)

WCF安全性:因为绑定只是一个BasicHttpBinding,服务不需要任何有效的东西。IIS负责这个。

服务的绑定配置:

<bindings>
  <basicHttpBinding>
     <binding>
        <security mode="Transport">
           <transport clientCredentialType="Basic" />
        </security>
     </binding>
  </basicHttpBinding>

最后,为了解决第一个错误,删除mex Endpoint。

删除:

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>

扫码关注云+社区

领取腾讯云代金券