请求JavaScript上的客户端证书 目标
我需要在浏览器上打开此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
操作中,如下所示:
[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
});
});