登录Jabber-net

时间:2014-07-12 11:30:59

标签: c# .net xmpp openfire

我尝试使用XMPP协议和Jabber-net编写应用程序。

问题是什么?

        JabberClient client = new JabberClient();

        client.User = USER_NAME;
        client.Password = PASSWORD;
        client.Server = SERVER;
        client.Resource = "MyTestClient"; 
        client.Port = 5222;
        client.AutoReconnect = 1;
        client.AutoPresence = false;
        client.KeepAlive = 10;
        client.PlaintextAuth = true;
        client.AutoLogin = true;

        client.OnConnect += client_OnConnect;
        client.OnAuthenticate += new bedrock.ObjectHandler(client_OnAuthenticate);
        client.OnInvalidCertificate += client_OnInvalidCertificate;
        client.OnError += new bedrock.ExceptionHandler(client_OnError);
        client.OnIQ += client_OnIQ;
        client.OnProtocol += client_OnProtocol;

        client.Connect();

,全局变量就像这些

        string USER_NAME = "09371231231";
        string PASSWORD = "09371231231";
        string SERVER = "181.29.101.224";

为什么我不能登录???

1 个答案:

答案 0 :(得分:1)

调用onInvalidCertificate事件处理程序时,XMPP服务器的TLS / SSL证书不受信任。这种情况通常发生在此证书是自签名,已过期或未颁发IP地址但DNS名称时。如果证书发给your-server.yourdomain.com,您还必须连接到your-server.yourdomain.com,而不是要检查证书的IP地址。

在此事件处理程序中,您可以告诉jabber-net连接到服务器desipte无效证书。 IIRC这是通过返回true来完成的。对于测试,这是可以的,对于成品,您应该无论如何向用户提供证书(如Web浏览器)。

编辑/回复您的评论:服务器告诉您,您的请求仍然存在问题。在不知道实际请求的情况下,很难猜出问题是什么。也许你可以在服务器日志中找到提示。如果没有,您应该仔细查看流量,尤其是失败的请求。

如果您需要嗅探流量,这里是我用来禁用TLS和压缩的代码,以便我可以在wireshark跟踪中看到一些内容:

client.SSL = false;
client.PlaintextAuth = true;
client.AutoStartTLS = false;
client.AutoStartCompression = false;

顺便说一下,这也可以防止无效的证书错误,但是用户应该可以配置他是否要使用TLS。