如何将特定页面限制为证书身份验证?

Posted

技术标签:

【中文标题】如何将特定页面限制为证书身份验证?【英文标题】:How to restrict specific pages to Certificate Authentication? 【发布时间】:2015-10-22 02:40:24 【问题描述】:

在我的 ASP.NET Web 应用程序中,我创建了 Default.aspx(设置为我的起始页)和一个名为 SmartCard 的新文件夹,其中包含 WebForm1.aspx。如何配置 Web.Config 以在访问 SmartCard/WebForm1.aspx 时提示用户输入证书,但在加载 Default.aspx 时不提示?

在this问题的接受答案中:

如果您的应用程序托管在 IIS 中,则只需添加(在 web.config 中)一个部分,说明这些页面需要客户端证书。然后浏览器会要求用户提供证书。

从上面的答案,我在 *** 上看了一些,发现 this。从他们接受的答案中,我将以下部分放在 Web.Config 中:

<location path="SmartCard">
  <system.webServer>
    <security>
      <access sslFlags="SslRequireCert" />
    </security>
 </system.webServer>

然后我修改了 C:\Windows\System32\inetsrv\config(或适合您的安装目录)中的 applicationHost.config 并更改了以下行:

<section name="access" overrideModeDefault="Deny" />

到:

<section name="access" overrideModeDefault="Allow" />

但是,我仍然会在加载站点时收到证书提示。我首先得到以下屏幕:

单击“继续访问此网站”后,系统会在加载 Default.aspx 时提示我选择证书。但是,我只想在加载 SmartCard/WebForm1.aspx 时提示选择证书!

非常感谢任何帮助!


这是我在 IIS-7 中的站点设置:

SSL 设置:

网站绑定:

*MyDevCert 是自签名的


更新:

我在 SmartCard 目录中创建了一个新的 Web.Config 文件,其中包含以下内容:

 <?xml version="1.0"?>
 <configuration>

    <security>
       <access sslFlags="SslRequireCert" />
    </security>
    <system.web></system.web>

 </configuration>

然后我从基本 Web.Config 中删除了“位置”标签。

基础 Web.Config:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <identity impersonate="false" />
  </system.web>
</configuration>

但是,我仍然收到“此网站的安全证书存在问题”屏幕,并且在单击“继续访问此网站”后提示我输入证书

【问题讨论】:

【参考方案1】:

据我所知,sslFlags 只能有一个值。

见http://www.iis.net/configreference/system.webserver/security/access 还有https://msdn.microsoft.com/en-us/library/ms689458(v=VS.90).aspx

sslFlags 属性可以是以下可能值之一。默认为无。

【讨论】:

即使我将 sslFlags 的值更改为 only:SslRequireCert。我仍然会在加载站点时收到证书提示。 @lucidgold 尝试从您的基本 web.config 中完全删除 &lt;location&gt; 部分。在“SmartCard”目录中创建一个单独的 web.config。将提取的配置部分放入新的 web.config。我很好奇 .Net/IIS 是否没有在整个站点范围内假设 SSL,因为您在根 web.config 中将 sslFlagsNone 更改为无论您的位置配置如何。 我已经更新了我的问题并按照您的建议进行了更改。但是,我仍然得到相同的反应。我的新 Web.config 是否正确? @lucidgold 我假设您的“MyDevCert”是自签名的。这是不正确的吗?如果它是自签名的,您总是会收到该警告。这是预期的行为。您的 Default.aspx 页面上是否仍然出现错误? 没错,它是自签名的。但是,加载 Default.aspx 时仍然会提示我输入证书。我只想在转到 SmartCard/WebForm1.aspx 时被问到

以上是关于如何将特定页面限制为证书身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

使用护照 jwt 进行身份验证

Mozilla FireFox页面根据身份验证类型控制更改

使用客户端证书的智能卡身份验证

DotNet Core:如何跨平台客户端证书 TLS 身份验证?

WCF与相互身份验证

如何将媒体文件的 URL 限制为 Django 中未经身份验证的用户?