- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 SASL 通过 XMPP 服务器进行身份验证。
/**
* Send Authentication, SASL
* @return Bool
* @param $username String
* @param $password String
*/
function authenticate($username, $password) {
$this->username = $username;
$this->password = $password;
var_dump($username, $password, $this->domain);
$auth = base64_encode($username.'@'.$this->domain."\u0000".$username."\u0000".$password);
$xml = '<auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">'.$auth.'</auth>';
if ($this->write($xml)) {
if ($xml = $this->listen(1, true)) {
if (preg_match("/<success/i", $xml)) {
$this->authenticated = $this->_sendStream();
}
}
}
$this->events->trigger('authenticate', $this->authenticated);
return $this->authenticated;
}
然而,XMPP 服务器响应:
<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><bad-protocol/></failure>
这是针对 Ejabberd 服务器的。当我打开 XMPP 流时,它显示:
<stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms><register xmlns='http://jabber.org/features/iq-register'/></stream:features>
所以我认为 SASL - PLAIN 应该可以工作。我有一个 JavaScript 版本,可以在 OpenFire 服务器上完美运行。 (目前无法在 Ejabberd 上测试)
sendAuthentication: function() {
clearTimeout(XMPP.sendAuthentication_timer);
var auth = Base64.encode(XMPP.username+'@'+XMPP.domain+'\u0000'+XMPP.username+'\u0000'+XMPP.password);
mySocket.events.receive.observe(XMPP.receivedAuthSuccess, function() {
mySocket.send('<auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' + auth + '</auth>');
});
}
所以我不明白为什么 PHP 版本不工作。
最佳答案
在 Python 中试试这个:
Username+"@xmpp.poppen.lab"+ chr(0) + Username + chr(0) + Password
对于 PHP 也使用 chr(0)
而不是 "\u0000"
关于php - 使用 PHP 在 Ejabberd 上进行 XMPP SASL 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216427/
我有操作系统 Red Hat Enterprise Linux Server release 7.4 (Maipo) 和 python Python 2.7.13 :: Anaconda 4.4.0
我在我的 Bluemix 应用程序中安装 sasl 时遇到以下错误: Installing collected packages: sasl, thrift-sasl
我正在处理有关 IM 的一些事情。它涉及XMPP。我在 Android 上开发了一个应用程序,所以我使用了 aSmack。我想登录 google talk,在这里(链接如下) https://deve
注意:我无法安装 libsasl2-dev,因为我没有管理员权限。 我构建了 cyrus-sasl-2.1.26.tar.gz: ./configure --prefix=/home/username
我对上述主题有几个问题,请你能帮助理解这些事情。 SASL/Plain 可以与 SSL 一起使用,也可以不与 SSL 一起使用。因此,如果不使用 SSL,则数据将被加密 和安全? 使用 SSL 的 S
尝试将 Message Hub Bluemix 服务与 Node 一起使用时,我收到错误:无法初始化 SASL 身份验证:SASL 握手失败(启动 (-4)):SASL(-4):没有可用机制:没有找到
我正在尝试将新用户添加到 SASL 数据库: saslpasswd2 -a memcached -c . 一旦我重复密码,我会收到以下错误: saslpasswd2: generic failur
我正在做一个涉及身份验证的项目,我不太明白 SASL 和 gssapi 之间的区别。 gssapi 是否在 SASL 的掩护下使用?我可以在没有 SASL 的情况下使用 gssapi 吗?正确的做法是
我正在尝试设置 SVN 以针对 ActiveDirectory 进行身份验证。我知道如果您将 SVN 设置为使用 Apache 提供服务,这是可能的,但这样做会引入太多开销,并且 SVN 运行速度太慢
为什么导入 javax.security.sasl.Sasl;不适用于 Android ???? 最佳答案 这不是 Google Android SDK 团队决定提供的 sun jdk 的一部分。支持
我已经在我的系统中配置了 svn 服务器,并为使用 SASL MD5 验证用户进行了以下配置。我在 svnserve.conf 中做了以下更改 [general] anon-access = no
我尝试在 Spring Boot 项目中设置一个 Mongo DB。我在 application.yml 中设置了一个 uri: spring: data: mongodb:
在我的代码中,在创建 TIdIMAP4 连接之前,我设置了一大堆 SASL 机制,希望按照规定的“最好到最差”顺序,如下所示: IMAP.SASLMechanisms.Add.SASL := mIdS
我们在 Windows Server 2008 上运行 RabbitMq 3.6.2 和 Erlang 17.4。我们在 sasl 日志中一遍又一遍地看到以下记录。它偶尔发生(每隔几个小时),没有特定
当我的应用程序崩溃时,我会收到一份需要 5 分钟滚动浏览的崩溃报告。处理这个问题的最佳方法是什么? 最佳答案 您可以将故障转储通过管道传输到文件。重要信息可能在顶部。 您可以按照 Hynek 上面所说
与许多 RabbitMQ 用户一样,我在 RabbitMQ 节点上看到一些大的 [MACHINE_NAME]-sasl.log 文件,除了 =PROGRESS REPORT==== 条目外什么都不包含
CentOS6.6、Postfix、dovecot 2.0.9 和 MySQL 5.1.73 dovecot 配置(/etc/dovecot/dovecot-sql.conf.ext): driver
我正在尝试制作一个 java 类,以便根据本地 SASL 对用户进行身份验证。我的 saslauthd 配置是这样的: $ cat /etc/sysconfig/saslauthd # Directo
我正在尝试在 ec2 两个实例上设置 zookeeper。如给定 here和 here . 我正在尝试运行因错误而失败的 zookeeper: 命令:bin/zkCli.sh -server loca
在 Zookeeper 和代理身份验证上启用 SASL 时,我遇到以下错误。 [2017-04-18 15:54:10,476] DEBUG Size of client SASL token: 0
我是一名优秀的程序员,十分优秀!