Estoy en el proceso de diseñar un sistema que consiste en una aplicación cliente y un solo servicio web. El cliente se distribuye en varias máquinas (instaladas por mí o por un colega), y la comunicación entre el cliente y el servidor se realiza a través de Internet.
Lo que estoy buscando es una forma de garantizar que el servicio web solo pueda recibir solicitudes de aquellas máquinas físicas en las que originalmente instalé la aplicación cliente.
Las computadoras estarán ejecutando algún tipo de Windows, todavía no estoy seguro de qué edición. Y el servicio web estará basado en WCF.
Mi idea actual es instalar un certificado de cliente en las máquinas y usarlo para la autenticación en el servicio web. No estoy seguro de cómo o si existe un mecanismo para bloquear el certificado en la máquina física, o simplemente protegerlo con contraseña para evitar que se exporte e instale en otra máquina.
Mi conocimiento de los certificados es muy básico, por lo que estoy preguntando si esto parece ser un enfoque viable, o si hay otra forma en que funcionaría mejor.
Editar : Me doy cuenta de que mi pregunta original era un poco vaga acerca de qué tan seguro quiero que sea esto.
La aplicación cliente puede considerarse como una molestia diaria para los usuarios que están obligados a usarla. Y uno de los puntos con la aplicación, es poder decir que una persona estuvo en este lugar / computadora en un momento determinado. Así que quiero poder decir desde mi servicio web que la solicitud no se originó en "mi máquina". Todo esto es para evitar que el "usuario molesto" piense en esquemas para evitar tener que estar en la ubicación donde se encuentra la computadora cliente-aplicación. Como simplemente copiar la aplicación a una computadora portátil.
Por lo tanto, se trata más de prevenir las formas sencillas de evitar el uso de mis instalaciones de la aplicación desde una de mis computadoras. Y el tipo de usuario no es alguien con un fondo de TI.
Gracias por las muchas respuestas útiles hasta ahora