我有一个包含两个.net核心WEB.API服务的系统,一个在公司内部网络(LAN)上,一个在外部服务器(DMZ)上。DMZ服务需要从LAN上的服务接收信息。问题是,由于信息安全,内部网络(LAN)有一个完整的通信块。
我知道一些解决方案,比如IBM DataPower代理来覆盖这个问题,但在我的例子中,我喜欢避免这个解决方案,并在软件级别上修复它(没有it部门、集成等等)。
我想用几种方法解决这个问题:
单向:通过从LAN服务到DMZ服务的长时间轮询。
Second way:使用WebSockets进行连接并绕过防火墙。DMZ将保存WebSockets服务,局域网将是WebSockets客户端。
这两种方式似乎是一种旁路。我正在寻找在语法方面更直观的东西,它的行为实际上就像从DMZ到LAN服务的客户机-服务器机制。
我喜欢实现的语法是: Server:
string GetCustomerId(string name){
....
}客户-非军事区:
var id = client.GetCustomerId("abc");当然,解决方案必须只有从LAN到DMZ的单向通信。我很感激你的帮助,该怎么做呢?
发布于 2020-07-21 12:38:09
我发现的解决方案是在两个队列(请求、响应)中使用RabbitMQ,每个方向一个。在LAN中,您需要运行一个服务,该服务侦听请求队列,处理请求,并通过响应队列返回响应。
在DMZ上,您可以运行一个API,该API通过请求队列将请求引向LAN,每个请求必须包含一个唯一标识符。将请求插入请求队列后,您将需要侦听响应队列,直到收到具有相同唯一标识符的消息为止。
您可以在插入队列之前添加一些额外的安全性,如加密消息,等等。
https://stackoverflow.com/questions/58609388
复制相似问题