Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请求JavaScript上的客户端证书 目标_Javascript_C#_Asp.net_Ssl_Digital Certificate_Base64 - Fatal编程技术网

请求JavaScript上的客户端证书 目标

请求JavaScript上的客户端证书 目标,javascript,c#,asp.net,ssl,digital-certificate,base64,Javascript,C#,Asp.net,Ssl,Digital Certificate,Base64,我需要在浏览器上打开此JavaScript证书模式,以便用户选择他们的证书(位于浏览器上): 然后将其保存在我的操作中,如下所示: [HttpGet] public ActionResult GetClientCertificate() { var requestCertificate = System.Web.HttpContext.Current.Request.ClientCertificate; ///Transform to byte[] and save on D

我需要在浏览器上打开此JavaScript证书模式,以便用户选择他们的证书(位于浏览器上):

然后将其保存在我的
操作中,如下所示:

[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>

链接 这是我迄今为止似乎遇到的问题(当时有一半问题没有得到回答):

经过大量研究(在@pedrofb的帮助下),我发现通过Ajax(或JavaScript)触发请求客户端证书的提示是不可能的,必须通过url使服务器配置触发它,这导致我改变了我的方法


我通过要求用户上传证书的.pptx文件以保存在我们的数据库中,以便稍后需要将其转换为
X509Certificate

时,浏览器会自动提示用户在请求SSL/TLS URL(需要客户端身份验证)时选择证书。它不适用于AJAX请求。如果在地址栏中插入正确的URL时浏览器未显示证书表单,请查看服务器配置。确保将客户端证书选项设置为必填项,并且已正确设置接受的CA证书。如果浏览器没有任何由接受的CA颁发的证书,它将不会显示formIf。如果您想使用来自本地密钥存储或智能卡或USB令牌的证书,请参阅免费跨平台浏览器扩展的Javascript API。我在实施客户端证书认证时,在这里看到了这篇文章。是否可以在使用JavaScript发出服务器请求之前解析/拦截X509证书。我想在请求头中传递该证书的颁发者名称。@VikashGupta您好,您需要一个JS库,以便在请求之前在浏览器中解析该证书
$(document).on("click", "#btnCertificate", function() {
    $.get("/Gerenciamento/CertificadoDigital/GetCertificate", null, function(data) {
        //// Redirect to other page
    });
});