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 集成 facebook 聊天时 SASL 身份验证失败
错误:无法访问未找到 javax.security.sasl.SaslException 的 SaslException 类文件