¿Configurar la autenticación para que la página de destino obtenga datos del proxy mediante restricción de acceso?

¿Configurar la autenticación para que la página de destino obtenga datos del proxy mediante restricción de acceso?

Imagine el escenario en el que tiene un cliente que quiere que implemente llamadas a una API externa en una página de destino que ha configurado para él. La API externa funciona en base a un contrato y claves API que se obtienen a través de ese contrato; por lo tanto, no debes exponer las claves API en fetch()llamadas desde tu interfaz.

Por lo tanto, ahora tiene el mandato de implementar una instancia de Docker que actúa como servidor intermediario, conectando fetch()las llamadas de su LP a la API externa, de modo que, con cada solicitud, tenga el siguiente tráfico:

client --> Docker container --> API --> Docker container --> client

Para mantener la seguridad estricta, ahora me pregunto cuál es el mejor enfoque para autenticar las solicitudes entrantes del cliente al contenedor Docker. La autorización se implementa a través de tokens CSRF que se entregan al cliente al cargar la página; publicar una autenticación inicial exitosa.

Dado que las páginas de destino no tienen un sistema de inicio de sesión y no podemos confiar en cookies que no sean HTTP o de terceros, pensé en permitir que solo ingresaran al contenedor Docker solicitudes que se originen en el dominio de la página de destino implementada; pero no sé A) si esto es posible (¿pensé en la Acces-Control-Allow-Originconfiguración en el contenedor Docker?), y B) si esto es seguro. En particular, me pregunto acerca de B) porque es bastante fácil falsificar cosas como un encabezado de referencia, así que me pregunto si los nombres de dominio desde los cuales se origina una solicitud también pueden falsificarse de una manera fácil.

Si también entendí las cosas correctamente, la regla proporcionada a través del Access-Control-Allow-Originencabezado solo se aplica en los navegadores y, por ejemplo, los clientes HTTP simples pueden eludirla o ignorarla; ¿correcto?

También pensé en la autenticación básica, pero preferiría algún tipo de autenticación que no exponga nada dentro del código del cliente, ya que en ese caso necesitaría proporcionar el token de autenticación a js.

Dado que el contenedor Docker se ejecuta en Apache, creo que la solución más estricta para este caso de uso sería restringir el acceso a la IP del LP implementado, a través deeste, usando algo comoeste. Sé que esto es más bien una restricción de acceso versus autenticación; pero creo que es la mejor solución para este escenario de página de destino que no expone nada al cliente.

información relacionada