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

WCF Server Configuration for Windows Authentication for wsHttpBinding

我必须在服务器上托管的服务上实施 "Windows Authentication"。
我正在使用 "wsHttpBinding"。其中"Message"是默认的安全模式。

以下是我的服务器配置:

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 配置:

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

我在尝试访问我的服务时收到以下错误。

当您使用wsHttpBinding时,安全模式必须是Transport才能在IIS上使用Windows身份验证,在另一端消费者需要配置服务器证书.

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

Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.

所以你必须wsHttpBinding如下:

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

如果您使用 Message 安全模式,这意味着您将通过非安全传输发送加密消息,并且要加密消息,您将必须使用自己的证书,在其他情况下在这方面,您还必须配置客户端如何验证证书,这可确保消费者正在协商正确的服务。