asp.net - 在 ASP.Net WebAPI 中选择性地接受客户端证书
问题描述
我有一个请求,允许客户选择使用 mTLS(相互身份验证)对我们的服务进行身份验证。我遇到的问题是我只想在一个端点上并且仅在特殊情况下才允许这样做。我不想在每个请求上全局接受或要求客户证书。IIS 中的设置允许忽略、接受或要求。
当我将其设置为接受并在 Chrome 中浏览到该站点时,我会弹出此弹出窗口
如果证书被传递到特定端点但不改变其他端点的行为,是否有办法接受证书?
解决方案
要在特定路由上启用SSL 协商设置,您可以将该设置应用于特定位置
<location path="Route/Goes/Here">
<system.webServer>
<security>
<access sslFlags="SslNegotiateCert"/>
</security>
</system.webServer>
</location>
根据 IIS 的设置方式,这可能会导致 500 错误,提示“此配置部分不能在此路径上使用。当该部分锁定在父级别时会发生这种情况。” 如果发生这种情况,您需要启用 SSL 设置读/写标志,如下所示:
或使用 Powershell:
Set-WebConfiguration //System.WebServer/Security/access[@sslFlags] -metadata overrideMode -value Allow -PSPath IIS:/
推荐阅读
- sql - AVG 函数在带有 GROUP BY 的 SELECT 中正确计算,但对于某些记录不带有 UPDATE
- python - 如何使用从其他变量构建的变量?
- json - 数据缺失 JSONDecoder
- reactjs - 在 handleChange 方法中使用正确的 obj 调用测试调度
- excel - +1 水消耗以匹配的宏按钮 =Today()
- virtualenv - 将现有的 virtualenv 项目放入 virtualwrapper
- php - 查询结果只返回一个值
- wpf - LiveCharts 地理地图 WPF
- c - 使用 SIOCSIWSCAN ioctl 为 WEP 网络获取 wifi 安全类型
- javascript - 如何从组件中更改服务变量的值?