请求JavaScript上的客户端证书

时间:2017-12-22 13:23:43

标签: javascript c# asp.net ssl digital-certificate

目标

我需要在浏览器上打开此JavaScript证书Modal,以便用户选择他们的证书(它在葡萄牙语抱歉):

enter image description here

然后将其保存在Action上,如下所示:

[HttpGet]
public ActionResult GetClientCertificate() {
    var requestCertificate = System.Web.HttpContext.Current.Request.ClientCertificate;

    ///Transform to byte[] and save on DataBase
}

问题

我花了很多时间研究,因为这是我第一次接触这种技术,但没有完成我的工作,我无法使其发挥作用。模态从不打开,ClientCertificate始终为空。在JavaScript上真的可以实现这个吗?

上下文

ISS配置

<access sslFlags="SslNegotiateCert" />

<applicationDependencies>
    <application name="Active Server Pages" groupId="ASP" />
</applicationDependencies>

<authentication>

    <anonymousAuthentication enabled="true" userName="" />

    <basicAuthentication enabled="false" />

    <clientCertificateMappingAuthentication enabled="true" />

    <digestAuthentication enabled="false" />

    <iisClientCertificateMappingAuthentication enabled="true">
    </iisClientCertificateMappingAuthentication>

    <windowsAuthentication enabled="false">
        <providers>
            <add value="Negotiate" />
            <add value="NTLM" />
        </providers>
    </windowsAuthentication>

</authentication>

<authorization>
    <add accessType="Allow" users="*" />
</authorization>

JS

$(document).on("click", "#btnCertificate", function() {
    $.get("/Gerenciamento/CertificadoDigital/GetCertificate", null, function(data) {
        //// Redirect to other page
    });
});

链接

这是我到目前为止看到的问题(其中一半未得到答复):

1 个答案:

答案 0 :(得分:4)

经过大量研究(并在@pedrofb 的帮助下),我发现不可能通过Ajax触发提示请求客户端证书(或JavaScript ),必须使服务器配置通过网址触发它,导致我将我的approch更改为此。

我通过要求用户上传证书的 .pptx 文件来解决它,以的形式保存在我们的数据库中,以后我需要将其转换为{{ 1}}