Deseo verificar certificados de cliente en mi servicio WCF.Validación de certificado personalizado en el servicio WCF
Mi objetivo es permitir que solo los clientes con certificados con huellas digitales específicas puedan comunicarse con mi servicio.
Mi servicio WCF está alojado en IIS, estoy usando basicHttpBinding y security mode = "transport" con credencial tipo "Certificate". IIS requiere certificados de cliente para la comunicación con el servicio.
Gracias de antemano por ayuda.
ACTUALIZACIÓN: Mi configuración:
<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>
Comportamiento:
<serviceBehaviors>
<behavior name="SomeServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="Custom" customCertificateValidatorType="SomeService.CustomCertificateValidator,SomeService" />
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
configuración del servicio:
<service
behaviorConfiguration="SomeServiceBehavior"
name="SomeService">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="testBinding"
contract="ISomeService">
</endpoint>
</service>
Y para fines de prueba he implementado validador de esta manera:
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");
}
}
Y esto no funciona. Puedo conectarme a mi servicio con cualquier certificado válido.
Intenté agregar un validador personalizado en clientCertificate pero no funciona. Parece que está diseñado para validar el certificado del cliente que el servicio usará en modo dúplex. Necesito validar el certificado entrante (certificado que el cliente está enviando). ¿Has probado esta opción en este escenario? – empi
Esto puede funcionar en el lado del cliente o del servicio y se usa para validar el certificado de mensaje entrante. – Maurice
Asegúrese de agregar esto a para validar el cliente en el servicio que es lo que desea. El se usa solo en el cliente para validar el servicio. –
Maurice