Asp.net IIS应用程序-某些URL应要求客户端ssl证书和其他don';别自找麻烦

Asp.net IIS应用程序-某些URL应要求客户端ssl证书和其他don';别自找麻烦,asp.net,authentication,iis,ssl,client-certificates,Asp.net,Authentication,Iis,Ssl,Client Certificates,我有一个IIS7托管的asp.Net应用程序(用c#编写) 有些应用程序URL需要使用客户端证书访问,有些则必须在没有客户端证书的情况下访问 这不是的重复,因为将应用程序设置为“接受所有URL的客户端证书”会导致某些浏览器(Android)向用户显示一个对话框,让用户选择客户端证书,即使这些特定URL实际上并不需要该对话框 因此,我需要两组url(为了简单起见,我们假设两个url)-一个是IIS将要求SSL证书的url,另一个是将不要求证书的url 有没有办法在IIS中实现这一点,或者我必须将我

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

有些应用程序URL需要使用客户端证书访问,有些则必须在没有客户端证书的情况下访问

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

因此,我需要两组url(为了简单起见,我们假设两个url)-一个是IIS将要求SSL证书的url,另一个是将不要求证书的url


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

在MVC中,有一个属性可以添加到控制器方法中,例如:

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

 public ActionResult PageTwo() {
    return this.View(); }
第一个需要SSL,第二个不需要

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


我不认为你能在IIS中做到这一点。希望这能为您指明正确的方向。

最终通过

  • 在我的应用程序下为URL创建虚拟目录,该URL不要求协商任何客户端证书
  • 将该虚拟目录的ssl设置中的客户端证书设置更改为“忽略”
  • 虚拟目录指向我的应用程序
  • 由于web配置现在被读取两次(一次用于虚拟目录,一次用于应用程序),因此需要使某些设置幂等(对于某些web.config设置,意味着在添加之前添加一个remove)
  • 主应用程序ssl客户端证书设置仍处于“接受”状态

  • 看起来你说的是服务器证书,而我说的是客户端证书。也许你可以像这里一样使用位置标签?