IRC和SASL身份验证

时间:2013-08-19 13:40:45

标签: irc sasl

我正在构建一个IRC客户端,目前正在尝试添加SASL支持。我已经让它工作得很好(身份验证工作),但是,有一个恼人的“故障”:

据我所知,SASL请求必须在注册前完成,如下所示:

if (sasl) {
    send("CAP REQ :sasl");
}
send("NICK: " + nick);
send("USER ....");

现在烦人的小事是SASL请求导致IRC服务器发回ERR_NOTREGISTERED(451)回复。现在,如果启用了SASL,我当然可以忽略第一个451回复,但这看起来有点令人讨厌。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

嗯,IRC上的SASL基于Client CAPability Negotiation

根据此规范,您在开头发送CAP LS,之后发送USERNICK。如果您在motd / motd缺失之前收到CAP响应,则服务器支持CAP。检查SASL是否在受支持的扩展列表中,并请求它。 如果你首先缺少motd / motd的结尾,服务器不支持CAP,因此不支持SASL。