【问题标题】:Getting HttpClientCertificate in ASP.NET MVC app在 ASP.NET MVC 应用程序中获取 HttpClientCertificate
【发布时间】:2020-10-16 10:29:30
【问题描述】:

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

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

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

我的网站是否需要在 IIS 管理器中设置?我启用了匿名身份验证

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

【问题讨论】:

标签: c# ssl iis client-certificates cac


【解决方案1】:

我们需要配置如何使用证书对客户端进行身份验证,ManyToOne 客户端证书映射或IISClientCertificateMappingAuthentication 中的OneToOne 客户端证书映射,以便服务器端在访问时要求客户端提供证书网站。对于安装了Active directory certificate authentication 的IIS 服务器,我们选择ClientCertificateMappingAuthentication 进行配置。
Client Authentication via X509 Certificates in asp.net
有关如何配置多对一、一对一客户端证书映射的信息,请参阅这些链接。
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.";

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2020-01-14
      • 1970-01-01
      相关资源
      最近更新 更多