【问题标题】:Secure TCP .NET Remoting Channel without Authentication无需身份验证的安全 TCP .NET 远程处理通道
【发布时间】:2009-10-15 01:23:30
【问题描述】:

我有一个 .NET 2.0 远程处理应用程序,它需要在可能位于不同域或根本没有域的机器之间进行通信。它正在使用 TCP 通道。

在我启用加密之前一切正常,然后在连接时出现错误“服务器已拒绝客户端凭据”。我做了很多搜索,但我一直无法找到适合我的解决方案。

我尝试过各种频道设置,但都没有成功。

我的远程处理对象有自己的内置身份验证,因此我不需要 Windows 进行任何类型的身份验证。

底线问题是:

“我能否在 .NET 远程 TCP 通道上启用加密,而 Windows 不会尝试验证客户端的凭据?”

【问题讨论】:

    标签: .net encryption remoting


    【解决方案1】:

    首先,使用“安全”属性/参数保护服务器和客户端通道。然后,在客户端将用户名和密码设置为空字符串。

    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);
    

    在这种情况下,客户端以匿名用户(NT AUTHORITY\ANONYMOUS LOGON)的身份连接到服务器,据我监控客户端和服务器之间的通信,它是加密的。

    问这个问题已经很久了,.NET Remoting 有点过时了,但我发现它很有用,也可以帮助其他人。

    【讨论】:

      【解决方案2】:

      经过大量研究,我得出的结论是,如果不使用 .NET 远程处理进行一些主要的自定义编码,这是无法完成的。

      我决定将项目移至 WCF,它允许在任何类型的身份验证之外使用 SSL。迁移到 WCF 后,一切都像魅力一样。

      【讨论】:

        【解决方案3】:

        我相当肯定大多数人已经转向 WCF,但我想提出对我有用的解决方案,希望对那些在 .net 远程处理上苦苦挣扎的人有用。要求是能够通过当前的 .net 远程实现与在不同域中运行的另一个 Windows 服务进行通信。我知道我必须使用模拟。我尝试了 Mehrzard 的解决方案,但无济于事。似乎连接没有使用我设置的凭据。然后我找到了this article,这解决了我的问题。我能够进一步设置凭据。

        IMyRemoteObject myObj = (IMyRemoteObject )
                        Activator.GetObject(
                        typeof(IMyRemoteObject ),
                        CreateConnectionString());
        
        IDictionary props =  ChannelServices.GetChannelSinkProperties(myObj );
        props["username"] = "Administrator";
        props["password"] = "xyz";
        props["domain"] = "TestDomain";
        
        //call the remote object
        MessageBox.Show(myobj.hello());
        

        【讨论】:

          猜你喜欢
          • 2010-11-24
          • 1970-01-01
          • 2014-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-09
          • 2014-07-31
          • 1970-01-01
          相关资源
          最近更新 更多