gpt4 book ai didi

php - 使用 PHP 在 Ejabberd 上进行 XMPP SASL 身份验证

转载 作者:搜寻专家 更新时间:2023-10-31 20:56:27 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com