IIS应用程序 - 一些Urls应该要求客户端ssl证书,而其他人不要求它

时间:2012-10-30 12:51:30

标签: asp.net authentication iis ssl client-certificates

我有一个IIS7托管的asp .Net应用程序(用c#编写)。

某些应用程序URL需要使用客户端证书进行访问,有些应该在没有它的情况下访问。

这不是This SA question的副本,因为将应用程序设置为“接受所有URL的客户端证书”会导致某些浏览器(Android)向用户显示一个对话框来选择客户端证书,即使它这些特定网址实际上并不需要。

所以我需要2套网址(简单来说就是2个网址) - 一个是IIS 需要一个SSL证书,一个网址不要求证书。

有没有办法在IIS中实现这一点,还是我必须将我的应用程序拆分为2?

2 个答案:

答案 0 :(得分:0)

在MVC中,您可以添加一个属性,例如:

 [RequireHttps]
public ActionResult PageOne() {
     return this.View();
}

 public ActionResult PageTwo() {
    return this.View(); }

第一个需要SSL,第二个不需要。

在WebForms中,您可以创建一个httpModule来检查ApplicationBeginRequest方法中的url,并在需要时重定向到SSL页面,但这需要逐页进行。

我认为你不能在IIS中这样做。希望这能指出你正确的方向。

答案 1 :(得分:0)

最终通过

解决了这个问题
  1. 在我的应用程序下为需要未协商客户端证书的URL创建虚拟目录。
  2. 将虚拟目录的ssl设置中的客户端证书设置更改为“忽略”。
  3. 虚拟目录指向我的应用程序
  4. 由于Web配置现在被读取两次(一次用于虚拟目录,一次用于应用程序),需要使一些设置具有幂等性(意思是 - 在添加某些web.config设置之前添加删除)。
  5. 主应用程序ssl客户端证书设置仍处于“接受”状态。