用于wsHttpBinding的Windows身份验证的WCF服务器配置

时间:2018-11-26 06:08:15

标签: wcf iis windows-authentication wshttpbinding

我必须在服务器上托管的服务上实现“ Windows身份验证”。
我正在使用“ wsHttpBinding”。其中,“消息”是默认的安全模式。

下面是我的服务器配置:

web.config

<authentication mode="Windows" />

    <services>
          <service name="WCFWsHttpBindingHttps.Service1" behaviorConfiguration="WCFWsHttpBindingHttps.Service1Behavior">
            <!-- Service Endpoints -->
            <endpoint address="" binding="wsHttpBinding" contract="WCFWsHttpBindingHttps.IService1">
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
          </service>
        </services>
    <behaviors>
          <serviceBehaviors>
            <behavior name="WCFWsHttpBindingHttps.Service1Behavior">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>

以下是我的IIS配置: enter image description here

尽管进行了所有配置,但我仍无法访问我的服务。 任何人都可以通知我在哪里出错或错过任何配置。

当我尝试访问服务时收到以下错误消息。 enter image description here

1 个答案:

答案 0 :(得分:1)

在使用wsHttpBinding时,要在IIS上使用Windows身份验证,安全模式必须为Transport,另一方面,使用者必须配置服务器证书。

如果您使用其他安全模式,则会遇到以下异常:

  

此服务的安全设置需要“匿名”身份验证,但未为承载此服务的IIS应用程序启用它。

所以您必须wsHttpBinding,如下所示:

<wsHttpBinding>
    <binding>
      <security mode="Transport">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
</wsHttpBinding>

如果您使用Message安全模式,则意味着您将通过非安全的传输方式发送加密的消息,并且要对消息进行加密,您将必须使用自己的证书,另一方面,还必须配置客户端如何验证证书,以确保消费者就正确的服务进行谈判。