2016-04-21 13 views
7

Nachdem ich einige MSDN-Artikel verfolgt hatte, hatte ich Client-Zertifikate und Benutzernamen-Kennwörter für meinen WCF-Dienst. Der Client benötigte ein Zertifikat sowie einen Benutzernamen und ein Passwort, um auf meinen Dienst zugreifen zu können.WCF-Client-Zertifikat funktioniert nicht mehr

Kürzlich, das Zertifikat funktioniert nicht mehr, ich kann auf den Dienst zugreifen, ohne das Clientzertifikat zu liefern. Ich verwende die SOAP-Benutzeroberfläche, um den Client zu testen. Normalerweise muss ich das Client-Zertifikat dem Schlüsselspeicher hinzufügen und dann angeben, welcher Schlüssel für die Anfrage verwendet werden soll.

Kürzlich habe ich einen Test eingerichtet und ich musste das Client-Zertifikat nicht liefern. Nichts in meinem Conifg hat sich geändert. Habe ich das richtig eingerichtet?

Vielen Dank.

Meine Bindung Config:

<wsHttpBinding> 
     <binding name="BasicBinding"> 
      <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Certificate" /> 
      <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" /> 

      </security> 

     </binding> 
     </wsHttpBinding> 

Mein Service:

<service behaviorConfiguration="APIServiceBehaviour" name="Service"> 
     <endpoint address="api" binding="wsHttpBinding" bindingConfiguration="BasicBinding" name="soap-api" bindingNamespace="https://myserver.com" contract="IAIService" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="https://myserver.com" /> 
      </baseAddresses> 
     </host> 
     </service> 

Das Verhalten:

 <serviceAuthorization principalPermissionMode="Custom"> 
     <authorizationPolicies> 
      <add policyType="MyAuthorizationPolicy,MyProject" /> 
     </authorizationPolicies> 
     </serviceAuthorization> 

     <serviceCredentials> 

     <serviceCertificate findValue="tempSClient" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" /> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" includeWindowsGroups="false" customUserNamePasswordValidatorType="MyProject.UserAuth,MyProject" /> 
     </serviceCredentials> 

    </behavior> 
+0

Warum glaubst du, hat es vorher funktioniert? – Evk

+0

Ich bekam 403 Fehler. Wenn ich das client cert hinzufügte, ließ es mich mit der Webservice-Sicherheit authentifizieren – Allan

+0

Wie sieht 'MyProject.UserAuth' aus? – sc3w

Antwort

1

Die Zertifikate ein Verfallsdatum haben. Haben Sie Ihr Zertifikat in certmgr.msc überprüft?

+0

Ja. Die Zertifikate sind in Ordnung. – Allan