XMPP、Ejebberd 授权机制

XMPP, Ejebberd auth-mechanism

我想问一下是否有可能在 ejabberd 配置中强制使用身份验证机制。目前,ejabberd 服务器正在提供可用的身份验证机制列表。

在 ejabberd 日志中我们可以看到列表:

Send XML on stream = <<"<stream:features><mechanisms
xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>PLAIN</mechanism>
<mechanism>X-OAUTH2</mechanism><mechanism>SCRAM-SHA-1</mechanism>
</mechanisms><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
</stream:features>">>

一些用户(在我们的案例中是 CPE(路由器、机顶盒))能够使用 SCRAM-SHA,其中一些只能使用 PLAIN 方法等。

2021-07-20 14:42:09.763 [info]
<0.6716.0>@ejabberd_c2s:handle_auth_success:432 (tls|<0.6716.0>) Accepted
c2s SCRAM-SHA-1 authentication for acs01@test.ejabberd.com by sql backend
from 192.168.0.1
2021-07-20 14:42:31.765 [info]
<0.6721.0>@ejabberd_c2s:handle_auth_success:432 (tcp|<0.6721.0>) Accepted
c2s PLAIN authentication for 00b052101005@test.ejabberd.com by sql backend
from 88.229.19.19
2021-07-20 14:42:36.438 [info]
<0.6722.0>@ejabberd_c2s:handle_auth_success:432 (tcp|<0.6722.0>) Accepted
c2s SCRAM-SHA-1 authentication for 001565a36103@test.ejabberd.com by sql
backend from 103.217.240.30

是否可以强制xmpp服务器只提供一种方法?

您可以使用禁用 SASL 机制 https://docs.ejabberd.im/admin/configuration/toplevel/#disable-sasl-mechanisms

其他的方法,看源码自动enabled/disabled: https://github.com/processone/ejabberd/blob/8afc320aba7bdb51f7a76973be2d9cbf200c6310/src/ejabberd_c2s.erl#L376

当然,你也可以把不需要的那几行删掉,重新编译安装。