ssl - 使用 RequireCertificate 为单个控制器/端点设置 Kestrel
问题描述
我不走运还是有一个选项可以指定只有一个路径/端点需要客户端证书?
场景:IdentityServer4 为我们的用户提供了以多种方式登录的选项(用户名/密码、Azure AD 或 ClientCertificate)
前两个按预期工作,但证书路径不会提示用户输入他/她的证书,我知道它可以使用 IIS,但我们想使用 Kestrel 运行它。
如果我将项目 kestrel 设置设置为需要证书,所有端点都需要它,这会破坏使用用户名/密码 og azure ad 登录时的用户体验。
是否有任何选项可以仅设置 localhost/certificate 路径以要求证书,然后如果请求中没有证书,则在重定向到该路径端点时提示用户提供他们的证书?
解决方案
通过设置两个主机并在证书挑战端点中捕获请求并检查连接来解决它,如果不存在证书并且连接正在使用非 requirecert 连接,我将上下文重定向到正确的连接,然后被提示按预期提供证书和登录工作。
推荐阅读
- javascript - 如何使用javascript从视频中提取字幕流
- bash - 使用一个命令从字符串中删除和替换字符
- reactjs - 扩展默认 Material UI 主题
- firebase - 如何在 Firebase 函数中使用循环?
- security - Pine 脚本 - 安全功能在不同的时间范围内显示不正确
- ffmpeg - FFmpeg 过滤复杂音频
- typescript - TypeScript Array<>.reduce() 类型
- javascript - 如何在 jquery 中获取 thymleaf 对象?
- c# - 如何使用 HttpClientFactory 在 .NET 5 中记录 HttpClient 的连接池信息?
- javascript - Select2 搜索不会返回结果