Compartir a través de


Validación de cliente

Download sample

Los servicios publican frecuentemente los metadatos para habilitar la generación automática y la configuración de tipos de proxy de cliente. Cuando no se confía en el servicio, las aplicaciones cliente deberían comprobar y validar que los metadatos cumplen con la directiva de la aplicación cliente con respecto a la seguridad, transacciones, el tipo de contrato de servicios etc. El siguiente ejemplo muestra cómo escribir un comportamiento de extremo de cliente que valide el extremo de servicio para asegurarse de que el extremo de servicio puede utilizarse con seguridad.

El servicio expone cuatro extremos de servicio. El primer extremo utiliza WSDualHttpBinding, el segundo extremo utiliza la autenticación NTLM, el tercer extremo habilita el flujo de la transacción y el cuarto extremo utiliza la autenticación basada en certificados.

El cliente utiliza la clase MetadataResolver para recuperar los metadatos para el servicio. El cliente exige una directiva que prohíba los enlaces dúplex, la autenticación NTLM y el flujo de la transacción mediante un comportamiento que se encargue de validar. Por cada instancia ServiceEndpoint importada de los metadatos del servicio, la aplicación cliente agrega una instancia del comportamiento de extremo InternetClientValidatorBehavior a ServiceEndpoint antes de intentar utilizar un cliente Windows Communication Foundation (WCF) para conectarse al extremo. El método Validate de comportamiento se ejecuta antes de llamar cualquier operación en el servicio y exige la directiva del cliente iniciando InvalidOperationExceptions.

Para generar el ejemplo

Para ejecutar el ejemplo en el mismo equipo

  1. Ejecute Setup.bat desde la carpeta de instalación del ejemplo. Esto instala todos los certificados requeridos para ejecutar el ejemplo.

  2. Ejecute la aplicación de servicio desde \service\ Debug.

  3. Ejecute la aplicación cliente desde \client\ Debug. La actividad del cliente se muestra en la aplicación de consola del cliente.

  4. Si el cliente y el servicio no se pueden comunicar, vea Sugerencias para la solución de problemas.

  5. Quite los certificados ejecutando Cleanup.bat cuando haya finalizado con el ejemplo. Otros ejemplos de seguridad usan los mismos certificados.

Para ejecutar el ejemplo en varios equipos

  1. En el servidor, especifique el servicio setup.bat. Al ejecutar setup.bat con el argumento service se crea un certificado de servicio con el nombre de dominio completo del equipo y se exporta el certificado del servicio a un archivo denominado Service.cer.

  2. En el servidor, edite App.config para reflejar el nuevo nombre del certificado. Es decir, cambie el atributo findValue en el elemento <serviceCertificate> of <serviceCredentials> Element al nombre de dominio completo del equipo.

  3. Copie el archivo Service.cer del directorio de servicio al directorio del cliente en el equipo cliente.

  4. En el cliente, especifique el cliente de setup.bat. Ejecutar setup.bat con el argumento cliente crea un certificado de cliente denominado Client.com y exporta el certificado de cliente a un archivo denominado Client.cer.

  5. En el archivo de client.cs cambie el valor de dirección del extremo MEX y findValue para establecer el certificado de servidor predeterminado para que coincida con la nueva dirección de su servicio. Para hacerlo, reemplace el host local con el nombre de dominio completo del servidor. Vuelva a generar.

  6. Copie el archivo Client.cer del directorio del cliente en el directorio del servicio en el servidor.

  7. En el cliente, ejecute ImportServiceCert.bat. De esta forma se importa el certificado del servicio desde el archivo Service.cer al almacén CurrentUser - TrustedPeople.

  8. En el servidor, ejecute el ImportClientCert.bat. De esta forma se importa el certificado del cliente desde el archivo Client.cer al almacén LocalMachine - TrustedPeople.

  9. En el equipo del servicio, integre el proyecto de servicio en Visual Studio y ejecute service.exe.

  10. En el equipo cliente, ejecute client.exe.

    1. Si el cliente y el servicio no se pueden comunicar, vea Sugerencias para la solución de problemas.

Para limpiar después del ejemplo

  • Ejecute Cleanup.bat en la carpeta de ejemplos cuando haya terminado de ejecutar el ejemplo.

    Nota

    Este script no quita los certificados del servicio en un cliente cuando se ejecuta este ejemplo en los equipos. Si ha ejecutado ejemplos de WCF que usan certificados en los equipos, asegúrese de borrar los certificados del servicio que se hayan instalado en el almacén CurrentUser - TrustedPeople. Para ello, utilice el comando siguiente: certmgr - del - r CurrentUser - s TrustedPeople - c - n <Nombre de Servidor Equipo Completo>. Por ejemplo: certmgr - del - r CurrentUser - s TrustedPeople - c - n server1.contoso.com.

Consulte también

Otros recursos

Using Metadata

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.