Ejabberd 服务器不公布外部身份验证

Ejabberd 服务器不公布外部身份验证

我有一个设置了 ejabberd 服务器以使用外部 Java 脚本进行身份验证,但是当我尝试使用 Smack 从 Java 客户端登录到服务器时,出现以下 SmackException:

No supported and enabled SASL Mechanism provided by server. Server announced 
mechanisms: [PLAIN, X-OAUTH2]. Registered SASL mechanisms with Smack: [SASL 
Mech: SCRAM-SHA-1-PLUS, Prio: 100, SASL Mech: SCRAM-SHA-1, Prio: 110, SASL 
Mech: DIGEST-MD5, Prio: 210, SASL Mech: PLAIN, Prio: 410, SASL Mech: X- 
OAUTH2, Prio: 410, SASL Mech: ANONYMOUS, Prio: 500, SASL Mech: EXTERNAL, 
Prio: 510]. Enabled SASL mechanisms for this connection: [EXTERNAL]. 
Blacklisted SASL mechanisms: [SCRAM-SHA-1-PLUS].

假设列出的“使用 Smack 注册的 SASL 机制:”和“为此连接启用的 SASL 机制:”机制是在客户端设置的(上述异常中均显示 EXTERNAL),但为什么服务器只宣布 PLAIN 和 X-OAUTH2 机制?有什么方法可以让服务器宣布 EXTERNAL?例如,我知道如何在 ejabberd.yml 文件中禁用特定机制,例如

disable_sasl_mechanisms: ["PLAIN", "X-OAUTH2"]

但似乎没有同等的推动机制。

以下是我目前在 ejabberd.yml 文件的 AUTHENTICATION 部分中的内容:

auth_method: external
extauth_program: "java -jar /opt/ejabberd/conf/auth.jar"
extauth_instances: 1
auth_use_cache: false

有什么想法我做错了什么?

相关内容