Antecedentes: estamos en el proceso de integrar dos aplicaciones web. La otra, la aplicación A, es un servicio de Internet de acceso público, que es proporcionado por un tercero y que ofrece API de servicios web con los que nos integraremos. La otra, la aplicación B, es una aplicación antigua (ish) heredada alojada en una intranet de la empresa. Por el momento, no se puede acceder a la aplicación B desde Internet. Es un sistema bastante grande y expone muchas API abiertas que están diseñadas para integraciones de sistemas estrictamente dentro de la intranet. No podemos permitirnos exponer estas API para que sean accesibles desde Internet (intencionalmente o por accidente). Controlamos la aplicación B, y podemos implementar las nuevas funciones y API relacionadas con la nueva integración, sin embargo, por favor.
He investigado un poco, intentando encontrar la solución más adecuada para estos desafíos de seguridad. Algunas fuentes sugieren que un proxy de seguridad del servicio web (o una puerta de enlace de seguridad como algunos lo llaman) proporcionaría seguridad adicional en un caso como este. Aparentemente, este proxy suele estar alojado en una DMZ. El proxy básicamente realizaría las funciones de seguridad que se requieren, como el cifrado / descifrado de mensajes, la verificación de la autenticación y la integridad de los mensajes, la auditoría, etc. Supongo que un enfoque como este es más razonable cuando se integran las aplicaciones existentes donde las comunicaciones de las aplicaciones son No está asegurado en este momento, pero la integración debe implementarse sin tener que modificar las aplicaciones. Sin embargo, supongo que la principal ventaja de un proxy en nuestra situación (cuando solo hay 2 aplicaciones) sería exponer únicamente la API limitada en la aplicación B, que es necesaria para la integración en el exterior y ocultar todo lo demás. Algunos de los beneficios secundarios pueden ser que descarga algún trabajo que, de lo contrario, caería en la aplicación B (como la criptografía, la validación de mensajes, la detección de posibles ataques, etc.) y podría proporcionar alguna protección adicional para los ataques DoS. ¿Son correctas aquí mis interpretaciones?
La verdadera pregunta es, ¿cuál sería la forma más segura de hacer que la API creada para la integración sea accesible desde el exterior y evitar el acceso a todo lo demás en la aplicación B? ¿Sería un proxy de seguridad un ¿Una adición razonable para mejorar la seguridad de la aplicación B (de la manera en que lo describí o de alguna otra manera), o es suficiente una integración directa de punto a punto? ¿Qué otros enfoques podrían ser razonables? Los aspectos de seguridad aquí son primordiales, pero, naturalmente, me gustaría evitar la ingeniería excesiva.