我必须在服务器上托管的服务上实现“ 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>
尽管进行了所有配置,但我仍无法访问我的服务。
任何人都可以通知我在哪里出错或错过任何配置。
答案 0 :(得分:1)
在使用wsHttpBinding
时,要在IIS上使用Windows身份验证,安全模式必须为Transport
,另一方面,使用者必须配置服务器证书。
如果您使用其他安全模式,则会遇到以下异常:
此服务的安全设置需要“匿名”身份验证,但未为承载此服务的IIS应用程序启用它。
所以您必须wsHttpBinding
,如下所示:
<wsHttpBinding>
<binding>
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</wsHttpBinding>
如果您使用Message
安全模式,则意味着您将通过非安全的传输方式发送加密的消息,并且要对消息进行加密,您将必须使用自己的证书,另一方面,还必须配置客户端如何验证证书,以确保消费者就正确的服务进行谈判。