我需要在浏览器上打开此JavaScript证书Modal,以便用户选择他们的证书(它在葡萄牙语抱歉):
然后将其保存在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
});
});
这是我到目前为止看到的问题(其中一半未得到答复):
答案 0 :(得分:4)
经过大量研究(并在@pedrofb 的帮助下),我发现不可能通过Ajax触发提示请求客户端证书(或JavaScript ),必须使服务器配置通过网址触发它,导致我将我的approch更改为此。
我通过要求用户上传证书的 .pptx 文件来解决它,以base64的形式保存在我们的数据库中,以后我需要将其转换为{{ 1}}