![将移动应用程序连接到局域网中的服务器](https://linux22.com/image/782890/%E5%B0%86%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我们有一个在局域网中运行的系统,无法从外部访问。现在我们开发了一个移动应用程序,它应该使用 API 调用与该系统通信。手机将使用蜂窝网络连接并从互联网访问该系统。
问题是如何让移动应用程序能够通过互联网访问该系统。这就是我想到的。
- 打开一个端口并将通信转发到服务器。他们的管理员告诉我这并不安全。
- 使用手机上的 VPN 连接接入 LAN。我不喜欢这种方式,因为用户需要在使用该应用程序之前启动 VPN 连接。
- 拥有可从互联网访问的第二个实例并共享同一个数据库。
还有其他想法吗?
该系统是一个在 Windows 服务器上运行的 .NET 应用程序。移动应用程序是一个 Android 应用程序。
谢谢
答案1
大多数组织不愿意/应该不愿意拥有面向互联网的 Web 应用程序或 API。但这些确实存在,因此它们通常由反向代理或 API 网关作为前端。它们提供了更精细的控制和许多其他功能。
https://en.wikipedia.org/wiki/Reverse_proxy
https://stackoverflow.com/questions/35756663/api-gateway-vs-reverse-proxy
https://www.l7defense.com/cyber-security/api-gateway-vs-reverse-proxy/
https://www.ibm.com/docs/en/mpf/7.1.0?topic=proxy-integrating-datapower-as-security-gateway-reverse
答案2
选项 4. 付钱给一个知道如何正确安全地完成这件事的人——不要试图自己重新发明这个特别复杂的轮子。
答案3
我将在容器或 Kubernetes 集群中运行反向代理和/或 API 网关以提高可用性,并将其与实际内部网络进一步分离。
答案4
我会使用 VPN。OpenSSL 是最简单的。
您也可以尝试 Hashicorp 的 Boundary。它是一种 SDP(软件定义边界)工具,有助于提供对服务器的安全访问。
最后,您可以尝试 ZTNA 提供商,它也能提供对服务器的安全访问。