1

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.

enter image description here

J'utilise IIS express 10.

Répondre

0

Le problème était Visual Studio 2015 met son fichier applicationhost.config IIS Express un des répertoires enfants de la solution. C'est dans le répertoire .vs/config.

Ma suggestion à quiconque d'autre en cours d'exécution dans ce problème consiste à:

(1) Tout d'abord assurez-vous que la configuration est ce que vous pensez fonctionnerait (SslRequireCert ou négocier). Cette partie n'est pas susceptible de vous retarder si vous savez ce qu'il devrait être dans le fichier applicationhost.config.

(2) Les Certificats sont configurés correctement. Je ne pense pas que c'était un problème dans mon cas, mais cela pourrait vous empêcher de lire cette propriété. Vous devriez être capable d'ouvrir mmc (tapez mmc après avoir appuyé sur le bouton Windows), d'aller à Certificats (ou d'ajouter le composant logiciel enfichable si vous ne l'avez pas) et de vous assurer que Personal/Certificates et Intermediate Certificates/Certificates/Les certificats ont les certificats dont vous avez besoin.

Et, comme je l'ai dit:

(3) Assurez-vous que vous avez le droit applicationhost.config.