使用SSL和客户端证书身份验证保护ASP.NET MVC应用程序

时间:2011-10-19 17:17:01

标签: asp.net-mvc ssl

我希望使用SSL和客户端证书身份验证来保护ASP.NET MVC应用程序。我正在使用IIS 7.5,Windows Server 2008 R2。

我想知道是否可以通过Web.config执行以下操作(必须通过那里!)

  1. 要求所有请求进行SSL通信
  2. 将多个客户端证书映射到单个用户
  3. 要求用户进行身份验证
  4. 此外,关于如何继续执行此操作,任何教程或其他相关资源的任何指示都将非常受欢迎,因为我几乎所有这些事情都是新手。

2 个答案:

答案 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)

按顺序:

  1. 要求所有请求进行SSL通信 - 是的。在IIS中,仅使用https绑定设置站点,并删除http绑定。该网站不会响应http请求。如果您这样做,则应创建一个脚本,将403.4错误从http://mysite.com重定向到https://mysite.com。您可以使用各种工具找到许多示例。

  2. 将多个客户端证书映射到单个用户 - 我不知道。我会传递这个。

  3. 要求用户进行身份验证 - 是。在web.config文件的<system.web>元素中,添加以下内容:

     <authorization>
         <deny users="?"/>
     </authorization>