Smack 中的 SASL 和 SASL PLAIN 有啥区别?

Posted

技术标签:

【中文标题】Smack 中的 SASL 和 SASL PLAIN 有啥区别?【英文标题】:What is the difference between SASL and SASL PLAIN in Smack?Smack 中的 SASL 和 SASL PLAIN 有什么区别? 【发布时间】:2012-05-08 08:04:26 【问题描述】:

我正在处理有关 IM 的事情。它涉及XMPP。 我在 android 上开发了一个应用程序,所以我使用了 aSmack。 我想登录google talk,这里(链接如下)

https://developers.google.com/talk/open_communications

说 google talk 只支持 SASL PLAIN。 但是当我在 INTERNET 中搜索时,很多人说 google talk 不支持 SASL 所以需要这段代码:

    connectionConfig.setSASLAuthenticationEnabled(false);

我很困惑;谁能告诉我SASL和SASL PLAIN之间哪个是正确的或区别?

【问题讨论】:

【参考方案1】:

SASL is a framework and protocol for authentication 意味着嵌入到其他协议中,以便可以重复使用这些库。

SASL PLAIN is a specific authentication mechanism,您可以通过 SASL 使用。

定义了一堆other SASL mechanisms,在协议、服务器和客户端中具有不同程度的支持。 XMPP 中主要使用的是 PLAIN、DIGEST-MD5(the old XMPP RFC 中的强制)和SCRAM-SHA-1(the new XMPP RFC 中的mandatory)。

无论如何,回答你的问题:

如果您禁用 SASL,那么 Smack 可能会使用所谓的 legacy authentication。如果您不使用 TLS 加密连接,这似乎可以解决问题,因为许多服务器不允许 PLAIN 通过未加密的连接。

【讨论】:

千感谢您的帮助,对我帮助很大。如您所说,如果我设置了 TLS 模式是必需的,是否意味着我不需要禁用 SASL 代码? 一个好的标准 XMPP 流将首先使用 TLS 加密,然后使用 SASL 进行身份验证。

以上是关于Smack 中的 SASL 和 SASL PLAIN 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

smack 普通 SASL 到 jabberd

使用 Smack 集成 facebook 聊天时 SASL 身份验证失败

错误:无法访问未找到 javax.security.sasl.SaslException 的 SaslException 类文件

无法使用 java 中的 smack 库使用 xmpp 服务器登录

RabbitMq sasl 日志中的关闭错误

postgres 与 node.js 连接中的 SASL 错误