我希望使用SSL和客户端证书身份验证来保护ASP.NET MVC应用程序。我正在使用IIS 7.5,Windows Server 2008 R2。
我想知道是否可以通过Web.config执行以下操作(必须通过那里!)
此外,关于如何继续执行此操作,任何教程或其他相关资源的任何指示都将非常受欢迎,因为我几乎所有这些事情都是新手。
答案 0 :(得分:7)
所以,回答我自己的问题..以上所有都可以通过Web.config来实现。 Web.config的以下部分需要通过系统/访问部分进行SSL,并配置多对一客户端证书映射。这些部分被锁定在applicationHost.config中,因此任何希望在Web.config中编辑它们的人都需要解锁它们。有很多教程,所以我不会进入它。
<security>
<access sslFlags="Ssl, SslNegotiateCert" />
<authentication>
<anonymousAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true" manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Authentication Certificate"
enabled="true"
permissionMode="Allow"
userName="foo"
password="bar">
<rules>
<add certificateField="Issuer" certificateSubField="CN" matchCriteria="*.stackoverflow.com" compareCaseSensitive="false" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
</security>
答案 1 :(得分:2)
按顺序:
要求所有请求进行SSL通信 - 是的。在IIS中,仅使用https
绑定设置站点,并删除http
绑定。该网站不会响应http请求。如果您这样做,则应创建一个脚本,将403.4错误从http://mysite.com
重定向到https://mysite.com
。您可以使用各种工具找到许多示例。
将多个客户端证书映射到单个用户 - 我不知道。我会传递这个。
要求用户进行身份验证 - 是。在web.config文件的<system.web>
元素中,添加以下内容:
<authorization>
<deny users="?"/>
</authorization>