首页 > 解决方案 > 使用 RequireCertificate 为单个控制器/端点设置 Kestrel

问题描述

我不走运还是有一个选项可以指定只有一个路径/端点需要客户端证书?

场景:IdentityServer4 为我们的用户提供了以多种方式登录的选项(用户名/密码、Azure AD 或 ClientCertificate)

前两个按预期工作,但证书路径不会提示用户输入他/她的证书,我知道它可以使用 IIS,但我们想使用 Kestrel 运行它。

如果我将项目 kestrel 设置设置为需要证书,所有端点都需要它,这会破坏使用用户名/密码 og azure ad 登录时的用户体验。

是否有任何选项可以仅设置 localhost/certificate 路径以要求证书,然后如果请求中没有证书,则在重定向到该路径端点时提示用户提供他们的证书?

标签: ssl.net-coreidentityserver4client-certificateskestrel

解决方案


通过设置两个主机并在证书挑战端点中捕获请求并检查连接来解决它,如果不存在证书并且连接正在使用非 requirecert 连接,我将上下文重定向到正确的连接,然后被提示按预期提供证书和登录工作。


推荐阅读