想要通过客户端证书实现身份验证我遇到了一些问题。
首先一些事实
整个站点都在使用 SSL。我正在使用 IIS 6(在 Windows Server 2003 上)并且已将站点配置为接受客户端证书,而不需要它们。然而,大多数浏览器都以某种方式实现,以便它们仅在严格要求时才要求用户提供证书。因此,身份验证模型并不是真正有用。
我自己的建议
我的第一个想法是设置HttpResponse.Status
属性,但它要求第一个空格之前的字符是整数。让浏览器发送客户端证书的有用状态是403.7 Client certificate required
,这将不起作用(除非您可以覆盖它)。
我还认为我只需将 IIS 配置为要求特定路径的客户端证书,但这 - 当然 - 仅适用于物理文件而不适用于路由。
一种可能的解决方案是创建一个特定的文件夹并要求为其提供客户端证书,这更像是一种黑客攻击而不是一种解决方案。因此,如果有人有更好的建议,我想避免这种情况。
澄清
我测试了 Internet Explorer、Firefox 和 Chrome 的浏览器响应(我使用 Chrome 作为主要浏览器,使用 Firefox 作为辅助浏览器)。除非我在 IIS 中根据需要进行配置,否则所有浏览器都不会要求提供客户端证书。
由于我的理解允许 HTTP 状态代码 403.7,因为 RFC 2616 仅将状态代码定义为前三位数字。由于 IIS 6 在需要客户端证书时返回 403.7,我认为发送它会强制 IIS 进入触发要求的特殊模式。
我想现在的问题是如何配置 IIS 以在给定虚拟路径而不是物理路径的情况下要求证书。