“此服务的安全设置需要Windows身份验证”客户端证书WCF项目的IIS错误

时间:2012-07-05 15:24:11

标签: wcf iis-7 wcf-security

我已经搜索了互联网(和SO)的解决方案。今天在RHS中出现的问题都没有解决我的问题,所以这里就是。

TLDR:我正在尝试构建需要客户端证书的WCF服务,而且我遇到了这个错误:

  

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

我在获取服务时遇到了一些问题,无法识别我为测试生成的自签名证书。它似乎现在正在工作,因为没有证书的客户端显示IIS错误403(禁止)而不是此异常。

我的服务web.config的相关摘要:

<wsHttpBinding>
    <binding name="clientCertificateBinding">
        <security mode="Message">
            <message clientCredentialType="Certificate" />
        </security>
    </binding>
</wsHttpBinding>

我定义了两个端点:一个用于“mex”(尝试删除它,不能解决我的问题)和一个用于实际服务。服务绑定使用binding="wsHttpBinding" bindingConfiguration="clientCertificateBinding"作为规范。

稍后,我告诉我的行为使用服务证书:

<behavior name="AwesomeBehaviour">
    <serviceMetadata httpsGetEnabled="true"/>
    <serviceCredentials>
        <serviceCertificate
        storeLocation="LocalMachine"
        storeName="My"
        findValue = 'CN=...' />
    </serviceCredentials>
    <serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>

此外,IIS设置为 Rquire SSL并需要客户端证书。不仅要接受它们,还要求它们。

我已尝试(如某些人的建议)将安全模式从Transport更改为MessageTransportWithMessageCredential;这没什么用。

还有this thread谈论NTLM和Negotiate作为传输凭证类型。这不能解决我的问题。

还有this KB article讨论cscript.exe。我安装了兼容性工具并添加了NTLM身份验证提供程序,但无济于事。

我不确定我错过了什么。

1 个答案:

答案 0 :(得分:1)

唉。解决方案有两个方面:

  • 将配置添加到<transport clientCredentialType="Certificate" />
  • 的安全标记中
  • 删除mex绑定

然后一切正常! \ O /

相关问题