在ASP.Net WebAPI中有选择地接受客户端证书

时间:2018-10-17 17:26:51

标签: asp.net iis asp.net-web-api

我有一个请求,允许客户选择使用mTLS(相互身份验证)对我们的服务进行身份验证。我的问题是我只想在一个端点上并且仅在特殊情况下才允许这样做。我不想在每个请求上全局接受或要求客户证书。 IIS中的设置允许忽略,接受或要求。

enter image description here

当我将其设置为“接受”并浏览到Chrome中的网站时,我会弹出此窗口

enter image description here

如果将证书传递给特定的端点但没有改变其他端点的行为,是否可以接受证书?

1 个答案:

答案 0 :(得分:1)

要在特定路线上启用SSL Negotiation settings,您可以将该设置应用于特定位置

<location path="Route/Goes/Here">
  <system.webServer>
    <security>
      <access sslFlags="SslNegotiateCert"/>
    </security>
  </system.webServer>
</location>

根据IIS的设置方式,这可能会导致出现500错误,提示“此配置部分无法在此路径上使用。当该部分锁定在父级时,会发生这种情况。”如果发生这种情况,您需要启用“ SSL设置读/写”标志,如下所示:

SSL Settings Read/Write

或使用Powershell:

Set-WebConfiguration  //System.WebServer/Security/access[@sslFlags] -metadata overrideMode -value Allow -PSPath IIS:/