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

发布于 2024-12-10 23:50:47 字数 277 浏览 0 评论 0原文

我希望通过 SSL 和客户端证书身份验证来保护 ASP.NET MVC 应用程序的安全。我使用的是 IIS 7.5、Windows Server 2008 R2。

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

  1. 要求所有请求进行 SSL 通信
  2. 将多个客户端证书映射到单个用户
  3. 要求对用户进行身份验证

另外,任何指针关于如何继续这样做,任何教程或其他相关资源将不胜感激,因为我对几乎所有这些事情都是新手。

I'm looking to secure an ASP.NET MVC application with SSL and client certificate authentication. I'm using IIS 7.5, Windows Server 2008 R2.

I'd like to know whether it's possible to do the following through Web.config (it has to be through there!)

  1. Require SSL communication for all requests
  2. Map multiple client certificates to a single user
  3. Require the user to be authenticated

Also, any pointers on how to go on about doing this, any tutorials or other relevant resources will be much appreciated as I'm new to pretty much all of these things.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青春有你 2024-12-17 23:50:47

所以,回答我自己的问题..以上所有内容都可以通过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>

So, to answer my own questions.. all of the above can be achieved through the Web.config. The following section of the Web.config requires SSL through the system/access section, and configures many-to-one client certificate mapping. These sections are locked in the applicationHost.config so anyone wishing to edit them in the Web.config will need to unlock them. There are many tutorials on that so I won't go into it.

        <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>
月光色 2024-12-17 23:50:47

按顺序进行:

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

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

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

     <授权>
         <拒绝用户=“?”/>
     
    

Going in order:

  1. Require SSL communication for all requests - Yes. In IIS, set the site with only an https binding, and delete the http binding. The site will not respond to http requests. If you do this, you should create a script to redirect 403.4 errors from http://mysite.com to https://mysite.com. You can find many examples of how to do this using various tools.

  2. Map multiple client certificates to a single user - I dunno. I will pass on this one.

  3. Require the user to be authenticated - Yes. In the web.config file, in the <system.web> element, add the following:

     <authorization>
         <deny users="?"/>
     </authorization>
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文