Escenario : Tengo una aplicación A que contiene datos confidenciales. Tengo una aplicación B que necesita procesar los datos. A proporcionará una interfaz web. B hará llamadas para obtener los datos requeridos de A.
Requisito : Me gustaría asegurar el sistema de tal manera que A transfiera datos solo a instancias reales de B. En la medida de lo posible, me gustaría evitar que cualquier persona pueda hacer una llamada a A, pretendiendo ser B
Soluciones consideradas : Esta pregunta se acercó más a mis necesidades: Cómo establecer una comunicación segura entre servidores Sin embargo, se trata de almacenar cierta información en el cliente (secreto compartido, certificado, clave pública / privada), ya sea codificada o guardada en algún lugar del servidor. Si bien esto evita que las partes externas ataquen el sistema, los administradores o desarrolladores del servicio B tendrán acceso a estos "secretos" y podrán falsificar una llamada de B.
Pregunta : ¿Es posible implementar un esquema de autenticación de aplicaciones que incluso los desarrolladores / administradores no puedan falsificar? Estoy abierto a soluciones que involucren controles de procedimiento, separación de responsabilidades y otras técnicas junto con controles de software / criptográficos