我有一个看起来像这样的设置:
我正在使用 Windows 身份验证来加密连接。主服务是安全的,没有人可以访问它,因此可以安全地存储每个节点服务的用户名和密码,以便在它们可用时连接到它们。
主服务将机密信息发送到每个 WCF 节点服务。因为连接是加密的,我知道有人很难解密它。我遇到的问题是如何确定我连接到我的 WCF 节点服务而不是其他人?
这是一个描述我的问题的场景
假设 Tom 是一个用户,他正在使用运行 WCF 节点服务的图表左上角的笔记本电脑。WPF 客户端是管理员(图表中的底部用户),他们可以在 Tom 的计算机上执行操作。Tom 需要查看加密文件的内容。Tom 无权拥有解密该文件的密码;因此,Tom 要求管理员为他解密该文件。然后管理员将加密的密码发送到主服务,主 wcf 服务将定位汤姆的计算机并UnencryptFile(string location, string password)
在汤姆的计算机上执行该方法。
我怎样才能防止汤姆获得该密码?如果他用自己的替换方法替换 WCF 节点服务,UnencryptFile(string location, string password) ... MesageBox.Show(password)
他将能够获取密码。简而言之,我知道可以反编译程序,所以我不介意汤姆知道我的程序在做什么。我介意的是连接到不属于我的服务。如果 Tom 调试 WCF 节点服务,也会发生什么。是否可以调试可执行文件?如果是这种情况,那么他将能够以这种方式查看密码。