Chcę sprawdzić certyfikaty klienta w mojej usłudze WCF.Niestandardowa walidacja certyfikatu w usłudze WCF
Moim celem jest umożliwienie komunikowania się z moją usługą tylko klientom posiadającym certyfikaty z określonymi odciskami kciuków.
Moja usługa WCF jest hostowana w IIS, używam basicHttpBinding i security mode = "transport" z typem poświadczenia "Certificate". Usługi IIS wymagają certyfikatów klienta do komunikacji z usługą.
Z góry dziękuję za pomoc.
UPDATE: Moja konfiguracja:
<basicHttpBinding>
<binding
name="testBinding"
maxReceivedMessageSize="2147483647">
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
Zachowanie:
<serviceBehaviors>
<behavior name="SomeServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="SomeService.CustomCertificateValidator,SomeService" />
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
konfiguracji usługi:
<service
behaviorConfiguration="SomeServiceBehavior"
name="SomeService">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="testBinding"
contract="ISomeService">
</endpoint>
</service>
I dla celów testu I wdrożone walidator w następujący sposób:
public class CustomCertificateValidator : X509CertificateValidator
{
public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)
{
throw new SecurityTokenValidationException("TEST Certificate was not issued by a trusted issuer TEST");
}
}
A to nie działa. Mogę połączyć się z moją usługą za pomocą dowolnego ważnego certyfikatu.
Próbowałem dodać niestandardowy weryfikator do certyfikatu clientCertificate, ale nie działa. Wygląda na to, że jest przeznaczony do sprawdzania certyfikatu klienta, którego usługa będzie używać w trybie dupleksu. Muszę zweryfikować certyfikat przychodzący (certyfikat wysyłany przez klienta). Czy próbowałeś tej opcji w tym scenariuszu? – empi
Może to działać po stronie klienta lub usługi i służy do sprawdzania certyfikatu wiadomości przychodzących. – Maurice
Upewnij się, że dodajesz to do w celu sprawdzenia poprawności klienta w usłudze, która jest tym, czego potrzebujesz. Element jest używany tylko na kliencie w celu sprawdzenia poprawności usługi. –
Maurice