在 JavaScript 请求客户端证书
Request Client Certificate on JavaScript
Objective
我需要在浏览器上打开这个 JavaScript 证书模式给用户 select 他们的证书(它是 葡萄牙语 抱歉):
然后像这样保存在我的 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
});
});
链接
这些是我到目前为止遇到的问题(一半没有回答):
Request Client Certificate
经过大量研究(并在@pedrofb 的帮助下),我发现 不可能 触发提示请求Ajax (or JavaScript) 的客户端证书,必须使 server 配置由 url,导致我改变了我的做法。
我通过要求用户上传证书的 .pptx 文件以作为 base64 保存在我们的数据库中来解决它,以便稍后我需要转换时使用它到 X509Certificate
Objective
我需要在浏览器上打开这个 JavaScript 证书模式给用户 select 他们的证书(它是 葡萄牙语 抱歉):
然后像这样保存在我的 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
});
});
链接
这些是我到目前为止遇到的问题(一半没有回答):
Request Client Certificate
经过大量研究(并在@pedrofb 的帮助下),我发现 不可能 触发提示请求Ajax (or JavaScript) 的客户端证书,必须使 server 配置由 url,导致我改变了我的做法。
我通过要求用户上传证书的 .pptx 文件以作为 base64 保存在我们的数据库中来解决它,以便稍后我需要转换时使用它到 X509Certificate