3
回答
在用smack模拟登录时报错:SASL authentication DIGEST-MD5 failed
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

@饶维立 你好,想跟你请教个问题:

在用smack模拟登录时报错:SASL authentication DIGEST-MD5 failed: not -authorized

请问是什么原因?该如何解决?谢谢

举报
xiaolei368
发帖于5年前 3回/12K+阅
共有3个答案 最后回答: 4年前

我的作法是关闭掉sasl认证方式,这种认证方式在Smack和Openfire有些版本中好像有问题。

同时Smack缺省还会打开TLS等处理,测试和开发环境下建议都关掉。

config.setTLSEnabled(false);
config.setCompressionEnabled(false);
config.setSelfSignedCertificateEnabled(false);
config.setSASLAuthenticationEnabled(false);
config.setVerifyChainEnabled(false);


--- 共有 1 条评论 ---
xiaolei368设置为登录不验证了,结果又出了下面的错误呢: not-authorized(401) at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:109) 5年前 回复

这个就是验证失败了,查下传递的参数(账号密码这些)是否通过了服务器端的认证。

将通信的日志打印出来;一般xmpp401的错误是账号密码不对。

--- 共有 6 条评论 ---
鱼中鱼router-users.xml <users> <user> <name>jabberd</name> <secret>secret</secret> </user> </users> 是这个文件中的帐号吗?用这个也是401啊,还和什么地方的配置有关呢? 4年前 回复
那份牵挂给了谁回复 @xiaolei368 : 你是怎么解决的?我现在也遇到这问题了,求帮忙 4年前 回复
chaSet回复 @xiaolei368 : 请问是如何解决掉 的?我也遇到这个问题了。 4年前 回复
yzp531回复 @xiaolei368 : 我也碰到这个问题,求方法 5年前 回复
塔塔米回复 @xiaolei368 : not-authorized(401),这个 怎么弄好的啊?说下啊.... 5年前 回复
回复 @鱼中鱼 :
很久没用openfire了,我也是凭经验判断。
登陆过程是这样:Socket建立->Stream绑定(得到服务器domain)->发送登陆请求->服务器返回验证方式->发送登陆验证信息(账号密码等)->登陆成功或者失败(401);
一般401就是认证信息不对,你可以通过openfire的日志看下,里面应该有记录认证失败的信息,也可以对比下发送的协议看下是不是协议发送的不正确;用Openfrie的Smack客户端对比验证下。
--- 共有 1 条评论 ---
鱼中鱼谢谢,这个问题我后来发现是这样的。 我误认为router-users.xml就是管理员,以为可以用来登录的,但实际用来登录的帐号是数据库里authreg表中的帐号,也就是通过注册来的。所以一直会有401,但还是对router-users.xml中配置的用户用来干什么,不是很清楚。 4年前 回复
顶部