0

我以前见过通用访问卡 (CAC) 被读入程序,但我现在正在修改 ASP.NET MVC 应用程序以使用 CAC 身份验证登录应用程序,这是我以前没有做过的。对于这个问题似乎没有直接的解释,至少对于像我这样开始的人来说没有。我的目标是让应用程序在打开时请求客户端证书。目前我有代码在 App_Start 目录的 Startup 类中请求证书:

        HttpClientCertificate cert = Request.ClientCertificate;
        cacid = Request.ClientCertificate["SubjectCN"].ToString();

当应用程序运行时,我得到一个空证书,并且 cacid(字符串)作为一个空字符串返回。我有一个 cac 阅读器,它可以正确显示在我的托管设备和一张要使用的卡中。我对此很陌生,以至于我什至可能不知道要问什么问题,但我会试一试:

我的网站是否需要在 IIS 管理器中设置一些?我启用了匿名身份验证 在此处输入图像描述

我是否需要 ActivClient 或 Active Directory 来实施或测试它?我没有考虑到什么我需要测试它是否正常工作?

4

2 回答 2

0

我们需要配置如何使用证书对客户端进行身份验证,客户ManyToOne端证书映射或OneToOne客户端证书映射,IISClientCertificateMappingAuthentication以便服务器端在访问网站时要求客户端提供证书。对于Active directory certificate authentication已安装的 IIS 服务器,我们选择了ClientCertificateMappingAuthentication进行配置。
通过 asp.net 中的 X509 证书进行客户端身份验证
有关如何配置多对一、一对一客户端证书映射的信息,请参阅这些链接。
https://support.microsoft.com/en-hk/help/2026113/configuring-many-to-one-client-certificate-mappings-for-internet-infor
https://docs.microsoft.com/en-us /iis/manage/configuring-security/configuring-one-to-one-client-certificate-mappings
在我们禁用了 IIS 认证模块中的其他认证模式并启用了 IISClientcertificateMapping 之后。 当客户端提供客户端证书时,以下代码将获取客户端证书信息,
在此处输入图像描述
在此处输入图像描述
在此处输入图像描述

HttpClientCertificate cert = Request.ClientCertificate;
            if (cert.IsPresent)
                TextBox1.Text = "Hello "+cert.Get("SUBJECTCN");
            else
                TextBox1.Text = "No certificate was found.";

如果有什么我可以帮忙的,请随时告诉我。

于 2020-06-26T03:23:18.630 回答
0

我有一个简单的解决方案。在 IIS 中导航到您网站的 SSL 设置,然后选中“需要 SSL”复选框,然后在“客户端证书”下单击“需要” 重新启动您的应用程序,您应该能够显示您的 CAC 身份验证。

于 2021-08-23T19:03:14.023 回答