El cliente es un concepto de red: los datos se transportan entre dos máquinas, el servidor y el cliente . El cliente es quien inicia la conversación; el servidor es el que está sentado todo el día, esperando que los clientes se conecten.
El usuario es la entidad biológica (presumiblemente humano) que controla al cliente. La autenticación se trata del servidor, asegurándose de que todo lo que recibe se origine de un usuario específico. Sin embargo, el servidor no está hablando con el usuario (el ser humano) sino con el cliente (la computadora del usuario). Cuando un servidor autentica al usuario a través de una cookie HTTP almacenada, realmente autentica al cliente : dado que el valor de la cookie se envió previamente a un cliente específico, solo ese cliente puede mostrar el valor exacto de la cookie. El servidor entonces asume que un cliente dado está bajo control exclusivo de su supuesto propietario humano, y luego se siente contento de que el usuario humano haya estado involucrado.
La distinción entre cliente y usuario se hace evidente cuando la máquina del usuario se subvierte (por ejemplo, infectada por malware). La máquina comenzará a hacer cosas fuera del control del usuario humano.
Para hacer una analogía, si tienes un perro y ese perro me muerde, te demandaré a tú , no al perro, porque se supone que el perro está bajo tu control. Incluso si el perro contrae rabia (explicando su comportamiento vindicativo), sigue siendo su responsabilidad. En ese sentido, autenticar al perro es tan bueno como autenticarlo (al menos a los ojos de mis abogados) y depende de usted asegurarse de que su perro esté realmente bajo su control exclusivo.
Con las aplicaciones web y la "API", la imagen puede volverse más compleja, ya que el servidor también puede comportarse como un cliente con respecto a otro servidor. Ese servidor secundario puede querer asegurarse de la identidad del primer servidor, del usuario humano que inició el proceso completo o de ambos. La terminología puede ser fuente de confusión si se reutilizan los mismos términos.
Cuando se usan pares de claves públicas / privadas, el propietario de la clave privada (la máquina que contiene la clave privada) la utiliza para realizar algunos cálculos que se vinculan con otro cálculo que involucra la clave pública. Por ejemplo, con firmas digitales , el propietario de la clave privada genera una firma sobre un mensaje determinado ( una secuencia de bytes); la firma se puede verificar utilizando la clave pública. Las firmas digitales son una buena herramienta para la autenticación: al calcular una firma en un desafío enviado por un verificador, el propietario de la clave privada demuestra a ese verificador su dominio de la clave privada. De este modo, el verificador obtiene una garantía de que realmente está hablando con "quien controla la clave privada correspondiente a una clave pública determinada". La parte interesante del proceso es que el verificador no necesita conocer la clave privada para eso, por lo que es posible verificar una firma sin tener el poder de generar firmas.