问题标签 [ejabberd-auth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

xmpp - Ejabberd - ejabberd_auth_external:failure:103 调用“check_password”时外部身份验证程序失败

我已经有一个具有身份验证密钥的用户模式,并希望通过它进行身份验证。我尝试通过 sql 实现身份验证,但由于我的架构结构不同,我遇到了错误,所以我实现了外部身份验证方法。我的应用程序中使用的技术和操作系统是:

  • 节点.JS
  • Ejabberd 作为 XMPP 服务器
  • MySQL 数据库
  • React-Native(前端)
  • 操作系统 - Ubuntu 18.04

我实现了https://docs.ejabberd.im/admin/configuration/#external-script中提到的外部身份验证配置,并采用了 php 脚本https://www.ejabberd.im/files/efiles/check_mysql.php.txt举个例子。但是我在 error.log 中收到了下面提到的错误。在 ejabberd.yml 我已经完成了以下配置。

...

host_config:
“example.org.co”:
auth_method:[外部]
extauth_program:“/ usr/local/etc/ejabberd/
JabberAuth.class.php”auth_use_cache:假

...

另外,是否有任何外部身份验证 javascript 脚本?

这是error.log和ejabberd.log,如下所述

错误日志

2019-03-19 07:19:16.814 [错误] <0.524.0>@ejabberd_auth_external:failure:103 为 admin@example.org.co 调用“check_password”时外部身份验证程序失败:已断开连接

ejabberd.log

2019-03-19 07:19:16.811 [调试] <0.524.0>@ejabberd_http:init:151 S: [{[<<"api">>],mod_http_api},{[<<"admin">> ],ejabberd_web_admin}]

2019-03-19 07:19:16.811 [调试] <0.524.0>@ejabberd_http:process_header:307 (#Port<0.13811>) http 查询:'POST' <<"/api/register">>

2019-03-19 07:19:16.811 [调试] <0.524.0>@ejabberd_http:process:394 [<<"api">>,<<"register">>] 匹配 [<<"api">> ]

2019-03-19 07:19:16.811 [info] <0.364.0>@ejabberd_listener:accept:238 (<0.524.0>) 接受连接 ::ffff:ip -> ::ffff:ip

2019-03-19 07:19:16.814 [info] <0.524.0>@mod_http_api:log:548 API 调用寄存器 [{<<"user">>,<<"test">>},{<<"主机">>,<<"example.org.co">>},{<<"password">>,<<"test">>}] 来自 ::ffff:ip

2019-03-19 07:19:16.814 [错误] <0.524.0>@ejabberd_auth_external:failure:103 为 admin@example.org.co 调用“check_password”时外部身份验证程序失败:已断开连接

2019-03-19 07:19:16.814 [调试] <0.524.0>@mod_http_api:extract_auth:171 验证数据无效:{error,invalid_auth}

任何有关此主题的帮助将不胜感激。

0 投票
1 回答
246 浏览

mqtt - 如何授权或限制用户不订阅和发布 ejabberd MQTT 模块中的特定主题?

我正在使用 ejabberd 19.02 进行客户端之间的 MQTT 通信。我可以使用“外部”身份验证方法对用户进行身份验证 - 只需验证用户名和密码。

我还要求允许一个用户发布一个主题,而不允许另一个用户发布该主题。订阅也是如此。我相信这是授权或访问控制。如何在 ejabberd MQTT 服务器上实现上述功能?

我看到了“访问规则”配置,但它似乎与某些用户的主题订阅/发布限制不匹配。

它可以像身份验证一样被控制吗?就像给外部责任一样

0 投票
1 回答
569 浏览

oauth - Ejabberd Oauth:访问被拒绝

我安装并配置了一个 Ejabberd XMPP 服务器。我测试了从移动应用程序连接到服务器并交换消息。现在我想启用 OAuth(需要将 OAuth 令牌生成集成到我自己的 Node.js REST API 中:登录我的 REST API = 登录我的 DB + Ejabberd OAuth 令牌生成)。我想通过在我的 REST API 登录中生成令牌并在我的 Android/Ios 应用程序中使用此令牌来防止执行 2 次登录调用(我的 REST API + Ejabberd)。

当我打开这个网址时:

http://my-server:5280/oauth/authorization_token?response_type=token&client_id=Client1&redirect_uri=http://my-server:3000/ejabberd&scope=get_roster+sasl_auth

我得到一个登录表单,在使用有效凭据填写表单后,我被重定向到此 url:

http://my-server:5280/oauth/authorization_token

响应为空:ERR_EMPTY_RESPONSE

0 投票
1 回答
55 浏览

ejabberd - 如何将我的自定义身份验证脚本连接到 ejabberd?

我已经搜索了我能想到的所有地方。我知道如何创建我的自定义身份验证脚本(我正在使用 Python),但我只是不知道如何将它连接到 ejabberd 服务器。它必须在一个特殊的位置吗?特殊名称?我是否以某种方式从 ejabberd.yml 指向它?

是什么触发 ejabberd 调用我的脚本而不是它自己的内部身份验证代码?

0 投票
1 回答
337 浏览

python - 无法在 Ejabberd 19.09.1 中启动外部身份验证程序

我正在尝试在 Ubuntu 18.04.3 上运行的 Ejabberd 19.09.1 中运行外部身份验证脚本,但我遇到了问题。在尝试并失败后,我尝试或多或少地直接从文档中复制示例:

我将 ejabberd.yml 文件设置为:

我复制了示例 python 脚本:

这给了我这些错误消息:

我注意到ejabberd论坛上的大多数评论都很老了,我也得到了这个

在 ejabberd.log 中,而文档说要使用 extauth_instances,所以我想知道是否某些文档可能已过时。

有关信息,我实际上并不了解python。我正在尝试运行 ac# 脚本,部分基于此处的 mark.p.jones 脚本https://www.ejabberd.im/node/1617/index.html,但我将其包括在内,因为我得到了同样的错误来自两者的消息和 python 脚本来自官方文档。

0 投票
1 回答
97 浏览

xmpp - 无法打开 ejabbered Web 仪表板 localhost:5280

我是 ejabberd 的新手,正在尝试使用它。我按照官方文档页面上的用户名和密码安装了 ejabbered。我能够启动 ejabbered 服务器并使用“Smack”API 通过 Java 连接到它。

但是,当我尝试在http://localhost:5280/admin/打开 Web 仪表板,然后以管理员用户身份登录时,它没有显示任何内容。当我检查日志时,它显示以下错误 -

2020-03-13 21:03:17.618 [error] <0.1965.0>@ejabberd_http:apply_custom_headers:860 CRASH REPORT Process <0.1965.0> with 0 neighbours crashed with reason: bad argument in call to maps:from_list([html]) in ejabberd_http:apply_custom_headers/2 line 860

2020-03-13 21:03:17.619 [error] <0.535.0>@ejabberd_http:apply_custom_headers:860 Supervisor ejabberd_http_sup had child undefined started with {ejabberd_http,start_link,undefined} at <0.1965.0> exit with reason bad argument in call to maps:from_list([html]) in ejabberd_http:apply_custom_headers/2 line 860 in context child_terminated

请帮我解决这个问题。谢谢!

0 投票
2 回答
1002 浏览

jwt - 与 ejabberd 一起使用的 JWT 秘密?

我正在关注这些:

并使用https://mkjwk.org/创建了如下所示的 secret.key以匹配上面第一个 URL 中的示例:

八进制键类型

根据https://auth0.com/blog/navigating-rs256-and-jwks/因为这是 HS 类型:

“简单地说,HS256 必须与任何想要验证 JWT 的客户端或 API 共享一个秘密”

所以我天真地假设在服务器上使用“k”作为密钥来签署 JWT,以便在任何 XMPP 客户端(桌面上的 stanza.io 和 pidgin)的密码字段中使用 JWT。

我有什么误解?我已经确认 ejabberd 正确启动(通过 ejabberdctl live 和 loglevel 4):

并且我仍然可以在我们的目录服务器中使用密码进行身份验证,但我不能使用 JWT。我认为我没有正确生成它,因为我只是像普通的共享密钥 JWT 一样对其进行签名。

谢谢,加文。

0 投票
1 回答
158 浏览

erlang - ejabberd 服务器无法启动,因为 ``mod_shared_roster`` 模块无法启动

我正在尝试启动 ejabberd 服务器,但是当我运行命令时ejabberdctl liveejabberdctl foreground出现错误。

错误表明mod_shared_roster模块无法启动,但错误原因是undef没有太大帮助。

我是 ejabberd 的新手,我尝试更改(在 ejabberd.yml 文件中我更改为)hosts的值,但没有成功。ejabberd.ymlhosts - 'localhost'hosts -'127.0.0.1'

这是终端输出

这是 .dump 文件的部分内容

请帮我找出我做错了什么,谢谢。

0 投票
0 回答
62 浏览

xmpp - 使用证书启用 Ejabberd SASL EXTERNAL (XEP-0178)

我正在尝试在 Ejabberd 中启用 SASL 证书基础身份验证(XEP-0178) ,但它似乎不起作用。

这是C2S配置

我期望它不允许用户连接,但我只是打印警告和用户身份验证

接下来记录它打印

对于身份验证,我还使用外部 HTTP 身份验证

我可以同时使用HTTP authSASL吗?还是我应该禁用HTTP auth?如果是,那么当用户连接时如何采取一些措施,比如我们在 HTTP Auth 中有密码和用户等参数。

进行了提交,但也没有帮助任何建议都将不胜感激。

使用 SASL EXTERNAL 与证书 (XEP-0178) 支持的最佳实践

0 投票
1 回答
61 浏览

authentication - XMPP,Ejebberd 身份验证机制

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

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

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

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