IRC 和 SASL 身份验证

标签 irc sasl

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

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

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

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

最佳答案

嗯,IRC 上的 SASL 是基于 Client CAPability Negotiation .

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

关于IRC 和 SASL 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18315285/

相关文章:

python - TypeError : can't concat bytes to str, 尝试使用 python3

java - 在 Android 中创建信使

windows - *有人*有 Windows SVNServe 通过 SASL/GSSAPI 对 AD/Kerberos 进行身份验证吗?

java - 使用 SASL_SSL/PLAIN 连接时出现 Kafka AdminClient 错误

node.js DIGEST-MD5计算: calculate 16 octect MD5 hash

xmpp - 如何链接 IRC 和 Google Talk?

Java 没有正确写入文件

python - 如何使用 Twisted IRCClient 获取用户的主机掩码

javascript - 使用 Javascript 生成 SASL MD5 摘要以通过 Active Directory 进行身份验证?