当前位置: 首页 > 知识库问答 >
问题:

SASLException未使用smack 4.1.1授权

易英奕
2023-03-14
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();                        builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
   // builder.setUsernameAndPassword(myUserName,password);
    builder.setServiceName(jabberServer);
    builder.setHost(jabberServer);
    builder.setPort(5222)
    builder.setDebuggerEnabled(true);

    AbstractXMPPConnection connection = new XMPPTCPConnection(builder.build());
    connection.connect();
    connection.login(myUserName,password);
    //connection.login();
SASLErrorException: SASLError using PLAIN: not-authorized

例如,将username设置为简单字符串username,也可以使用username@jabber.org(或@jabber.de)

我的生成器上的SetDebuggerEnabled(false)SetCompressionEnabled(false)SetCompressionEnabled(true)

还要配置SASL机制:

    null

所有这些尝试,我也都评说得一干二净。

我搜索了很多,发现这是旧的Smack库上的一个bug,但应该在新的Smack版本4.0以上的版本中修复。所以我不得不假设这个错误不是Smack中的bug。

我认为这个错误可能是因为我使用的帐户没有注册,所以我尝试在使用smacksAccountManager登录之前注册新帐户。我已经在我的Builder()上设置了AllowEmptYorNullUserNames(),但是register new account抛出Service not available Exception,所以我只是假设在jabber.org或jabber,de上不能注册AccountManager

https://github.com/igniterealtime/smack/wiki/smack-4.1-readme-and-upgrade-guide

  1. 我缺少什么?
  2. 还是bug,如果是,如何自行解决?
  3. 帐户必须由AccountManager注册,或者如果用户在jabber服务器上不存在,是否自动注册?
  4. 有人能给我指引正确的方向吗(代码示例?)可能使用https://XMPP.org/xmpp-software/servers/?
  5. 中的其他免费XMPP服务器
  6. 我在ignite realtime上下载了一些关于使用更好的夜间构建的文章,比如smack-SNAPSHOT-2015-06-07,但是我应该如何将夜间构建集成到我的Android Studio项目中呢?使用依赖项(如果是,如何使用?),使用导入模块?

在整个开发宇宙中有没有人成功地解决了这个问题?我很感激你提供的任何信息...

AccountManager accountManager = AccountManager.getInstance(connection);
Map<String, String> map = new HashMap<String, String>();
map.put("username", myUserName);
map.put("password", myPassword);
map.put("email", myEmail);
accountManager.createAccount(myUserName, myPassword, map);
AccountManager accountManager = AccountManager.getInstance(connection);
accountManager.createAccount(myUserName, myPassword);

那么,新的问题是,如何注册成功的新帐户?我是否错过了配置中的某些内容,例如允许注册帐户?

事实证明,最免费的服务器已经禁用了带内注册,因为太多的垃圾邮件暴力。因此在最开放的免费xmpp服务器上是不可能的。现在问题来了,有这种情况如何通过app注册?我读过一些关于web服务的文章,这会是一个解决方案吗?

共有1个答案

司马钱明
2023-03-14

通过联系Jabber.de提供程序团队,我发现他们禁用了带内注册。这意味着,不可能从一个应用程序中创建一个新的帐户(也许只有在他们自己开发一个应用程序并在其中安装一些安全机制的情况下)。还发现最免费的xmpp服务器不允许带内注册,他们之所以这样做是因为太多的垃圾邮件暴力和来自尝试注册的应用程序的攻击。

在禁用带内注册的服务器上,您必须将用户引导到服务器网站,并且用户必须通过Web注册。我在上面的例子中所做的一切都是正确的方法,并且适用于没有禁用带内注册的服务器。

但是对于所有尝试类似事情的人来说,一个警告是:不要依赖于带内注册,如果你想提供一个开放的免费服务器,而不是你自己的,你必须注意这个注册。未禁用带内的服务器将来也可以这样做,如果您想让用户在那里注册,那么如果注册失败,您必须有第二种可能性。

 类似资料:
  • 我从关于如何使用jwt进行授权的演练中获取了第2节,这样我就可以从我的客户端获得一个访问令牌,并授权他们使用该api。然而,我似乎不能让这个工作。我不断收到邮递员发来的401消息,还附有一句: 教程链接:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/ 访问

  • 我是Spring Security的新手,我正在开发一个需要使用Spring Security 3.2进行身份验证和授权的web应用,身份验证部分工作正常,但授权不正常。下面是我的Spring Security配置xml片段。 使用此配置,除了授权之外,其他一切都可以正常工作。我有两个用户,即tim@abc.com(角色=管理员)和bob@abc.com(role=USER),但是当我尝试使用bo

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我得到以下错误,而登录成功连接后: 我在OpenFire服务器上打开用户,用户名8b6c219c36578e893c5e6d1d7b5af8a@myjob.uz。如果我使用asmack-2010.05.07所有工作正常,但当使用asmack-android-8-4.0.6我得到以下错误。\任何人知道如何修复它? 以下是连接方法: