Dan*_*olt 2 .net encryption remoting
我有一个 .NET 2.0 远程处理应用程序,它需要在可能位于不同域或根本没有域的机器之间进行通信。它正在使用 TCP 通道。
一切正常,直到我启用加密,然后在连接时出现错误“服务器拒绝了客户端凭据。” 我已经做了很多搜索,但找不到适合我的解决方案。
我尝试过各种频道设置,但没有任何成功。
我的远程对象有它自己的内置身份验证,所以我不需要 Windows 进行任何类型的身份验证。
底线问题是:
“我可以在 .NET 远程 TCP 通道上启用加密,而无需 Windows 尝试验证客户端的凭据吗?”
首先,使用“安全”属性/参数保护服务器和客户端通道。然后,在客户端将用户名和密码设置为空字符串。
IDictionary properties = new Hashtable();
properties["username"] = "";
properties["password"] = "";
// Set other properties here
IClientChannelSinkProvider provider = new BinaryClientFormatterSinkProvider();
channel = new TcpClientChannel(properties, provider);
ChannelServices.RegisterChannel(channel, true);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端以匿名用户(NT AUTHORITY\ANONYMOUS LOGON)的身份连接到服务器,就我监视客户端和服务器之间的通信而言,它是加密的。
自从问这个问题已经很久了,.NET Remoting 有点被弃用了,但我发现它很有用,也可以帮助其他人。