问题描述
我是运气不好还是有一个选项可以指定只有一个路径/端点应该需要客户端证书?
场景: IdentityServer4 为我们的用户提供多种登录方式(用户名/密码、Azure AD 或 ClientCertificate)
前两个按预期工作,但证书路径不会提示用户输入他/她的证书,我知道它可以使用 IIS,但我们想使用 Kestrel 运行它。
如果我将项目 kestrel 设置为要求所有端点都需要证书,这会在使用用户名/密码 og azure ad 登录时破坏用户体验。
是否有任何选项可以仅设置本地主机/证书路径以要求证书,然后如果请求中不存在证书,然后在重定向到该路径端点时又提示用户提供他们的证书?
解决方法
通过设置两个主机并在证书挑战端点中捕获请求并检查连接来解决它,如果没有证书存在并且连接正在使用非requirecert连接我将上下文重定向到正确的连接并且是然后提示提供证书并按预期登录。