强制 Visual Studio IIS Express 提示用户输入用户证书

PSU*_*rdi 4 c# visual-studio iis-express owin visual-studio-2019

我目前正在使用 Visual Studio Professional 2019,并且有以下用例。

我正在尝试使用 X509 进行用户身份验证。我提示输入证书并通过 IOwinRequest.Environment 查找它并查找属性 ssl.ClientCertificate

在我的初创公司中我正在使用这样的东西

            app.UseClientCertificateAuthentication(new DefaultClientCertificateValidator());
Run Code Online (Sandbox Code Playgroud)

这反过来最终会达到

  ClientCertificateValidationResult validationResult = await Task<ClientCertificateValidationResult>.Run(() => ValidateCertificate(Request.Environment));
            if (validationResult.CertificateValid)
            {
              // Do some stuff 
            }

Run Code Online (Sandbox Code Playgroud)
        private ClientCertificateValidationResult ValidateCertificate(IDictionary<string, object> owinEnvironment)
        {
            if (owinEnvironment.ContainsKey(_owinClientCertKey))
            {
                X509Certificate2 clientCert = Context.Get<X509Certificate2>(_owinClientCertKey);
                return _clientCertificateValidator.Validate(clientCert);
            }
Run Code Online (Sandbox Code Playgroud)

如果我将其投入生产并使用一些日志语句,我可以看到事情按正确的顺序发生并实际验证(这很好)。但是,我想在调试中实际运行此操作,以便我可以测试其他一些项目。

在 Visual Studio 中运行时,它通过 IIS Express 运行。在我的项目属性中,我启用了 SSL,并且可以在 https://localhost:44300/ 上访问该 url,但是,它从不提示输入用户证书。

如果这个应用程序在产品中,我只需进入 IIS,进入 SSL 连接部分并要求用户传递证书。有没有办法在 Visual Studio 的 IIS Express 中执行此操作?

我想 Web.Config 或 AppHost 文件中可能会有一些东西

C:\directory.vs\solution_name\config\applicationhost.config

但我可能错过了一些愚蠢的事情。

任何帮助都会很棒!

zma*_*zma 6

您需要修改applicationhost.config文件。

可以在此处找到各种版本的 Visual Studio 的文件位置。

对于 Visual Studio 2019+,路径是

$(solutionDir)\.vs\{projectName}\config\applicationhost.config

在文件中搜索access sslFlags里面的元素<security>。然后只需将其值更改为SslNegotiateCert(请求客户端证书)。

的其他值可以在这里sslFlags找到。