J'ai vu beaucoup de questions non résolues à ce sujet. Apparemment de nombreux développeurs ont obtenu past ce problème, mais je n'ai vu aucune solution postée. J'essaie de lire une carte à puce (CAC X.509) pour mon application Web ASP.NET MVC 5. Lorsque j'essaie de tirer les informations de certificat comme ceci:Demande de certificat client
var request = HttpContext.Request;
var cert = request.ClientCertificate;
Le certificat a des valeurs vides.
Le problème semble être que je ne présente pas la boîte de dialogue pour demander des informations de certificat d'utilisateur comme je vois sur d'autres sites Web. Comment afficher cette boîte de dialogue?
Je l'utilise avec SSL activé. Mon applicationhost.config a cela il:
<authentication>
<anonymousAuthentication enabled="false"/>
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true" manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Authentication Certificate"
enabled="true"
permissionMode="Allow"
userName="foo"
password="bar">
<rules>
<add certificateField="Issuer" certificateSubField="CN" matchCriteria="*localhost*" compareCaseSensitive="false" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="false">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
Voici mon nœud d'accès:
<access sslFlags="SslRequireCert" />
Remarque: ce nom d'utilisateur/mot de passe = toto/titi semble suspect. Pourquoi cela serait-il du côté des utilisateurs? Y a-t-il un compte de service requis à associer à cela?
J'ai également essayé des configurations plus simples:
<authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="true" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="false">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
Qu'est-ce qui se passe est la page est présentée normalement, mais je ne suis pas sollicité pour mon certificat client.
J'ai clairement les certificats client, donc je ne vois pas pourquoi autres sites Web peuvent les demander.
J'utilise IIS express 10.