IIS客户端证书映射规则未得到遵守

时间:2017-08-02 11:57:52

标签: iis ssl-certificate client-certificates

我在Windows Server 2012 R2上运行IIS 8.5。我已经配置了一个WebAPI(构建在ASP.net上)网站,使用HTTPS(自签名)和IIS客户端证书映射进行客户端证书身份验证。我正在使用ManyToOneMapping,我已经定义了一个本地帐户与客户端证书关联传入请求。此外,我在映射中定义了一个规则,这样如果证书中的“主题”字段包含某个字符串,那么它应该允许该请求。

现在,当我点击API应用程序中的url时,Firefox会提示我选择要使用的证书(如预期的那样)。当我选择其中一个包含映射规则中定义的字符串的证书时,浏览器仍然与资源一起提供。我被期待一个禁止的反应。因此,似乎客户端证书映射未按预期工作。

由于我是IIS的新手,我想知道如何才能找到解决这种情况的方法。提前谢谢。

以下是applicationhost.config文件的片段:

<location path="SimpleApi" overrideMode="Allow">
    <system.webServer>
        <security>
            <authentication>
                <iisClientCertificateMappingAuthentication enabled="true" oneToOneCertificateMappingsEnabled="false">
                    <manyToOneMappings>
                        <add name="Authorized Access" description="Some long description" userName="SomeUser" password="[enc:AesProvider:removed:enc]">
                            <rules>
                                <clear />
                                <add certificateField="Subject" certificateSubField="OU" matchCriteria="Admin" />
                            </rules>
                        </add>
                    </manyToOneMappings>
                    <oneToOneMappings />
                </iisClientCertificateMappingAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>
<location path="SimpleApi">
    <system.webServer>
        <security>
            <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
        </security>
    </system.webServer>
</location>

1 个答案:

答案 0 :(得分:0)

唯一的可能性是您为您的网站启用了其他身份验证机制,它只是回归到该身份验证机制。

在IIS中检查您网站的身份验证模块,并禁用所有其他身份验证机制。