我在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>
答案 0 :(得分:0)
唯一的可能性是您为您的网站启用了其他身份验证机制,它只是回归到该身份验证机制。
在IIS中检查您网站的身份验证模块,并禁用所有其他身份验证机制。