问题标签 [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.
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}
任何有关此主题的帮助将不胜感激。
mqtt - 如何授权或限制用户不订阅和发布 ejabberd MQTT 模块中的特定主题?
我正在使用 ejabberd 19.02 进行客户端之间的 MQTT 通信。我可以使用“外部”身份验证方法对用户进行身份验证 - 只需验证用户名和密码。
我还要求允许一个用户发布一个主题,而不允许另一个用户发布该主题。订阅也是如此。我相信这是授权或访问控制。如何在 ejabberd MQTT 服务器上实现上述功能?
我看到了“访问规则”配置,但它似乎与某些用户的主题订阅/发布限制不匹配。
它可以像身份验证一样被控制吗?就像给外部责任一样
oauth - Ejabberd Oauth:访问被拒绝
我安装并配置了一个 Ejabberd XMPP 服务器。我测试了从移动应用程序连接到服务器并交换消息。现在我想启用 OAuth(需要将 OAuth 令牌生成集成到我自己的 Node.js REST API 中:登录我的 REST API = 登录我的 DB + Ejabberd OAuth 令牌生成)。我想通过在我的 REST API 登录中生成令牌并在我的 Android/Ios 应用程序中使用此令牌来防止执行 2 次登录调用(我的 REST API + Ejabberd)。
当我打开这个网址时:
我得到一个登录表单,在使用有效凭据填写表单后,我被重定向到此 url:
响应为空:ERR_EMPTY_RESPONSE
ejabberd - 如何将我的自定义身份验证脚本连接到 ejabberd?
我已经搜索了我能想到的所有地方。我知道如何创建我的自定义身份验证脚本(我正在使用 Python),但我只是不知道如何将它连接到 ejabberd 服务器。它必须在一个特殊的位置吗?特殊名称?我是否以某种方式从 ejabberd.yml 指向它?
是什么触发 ejabberd 调用我的脚本而不是它自己的内部身份验证代码?
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 脚本来自官方文档。
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
请帮我解决这个问题。谢谢!
jwt - 与 ejabberd 一起使用的 JWT 秘密?
我正在关注这些:
- https://www.process-one.net/blog/ejabberd-19-08/
- https://docs.ejabberd.im/admin/configuration/authentication/#jwt-authentication
并使用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 一样对其进行签名。
谢谢,加文。
erlang - ejabberd 服务器无法启动,因为 ``mod_shared_roster`` 模块无法启动
我正在尝试启动 ejabberd 服务器,但是当我运行命令时ejabberdctl live
或ejabberdctl foreground
出现错误。
错误表明mod_shared_roster
模块无法启动,但错误原因是undef
没有太大帮助。
我是 ejabberd 的新手,我尝试更改(在 ejabberd.yml 文件中我更改为)hosts
的值,但没有成功。ejabberd.yml
hosts - 'localhost'
hosts -'127.0.0.1'
这是终端输出
这是 .dump 文件的部分内容
请帮我找出我做错了什么,谢谢。
xmpp - 使用证书启用 Ejabberd SASL EXTERNAL (XEP-0178)
我正在尝试在 Ejabberd 中启用 SASL 证书基础身份验证(XEP-0178) ,但它似乎不起作用。
这是C2S配置
我期望它不允许用户连接,但我只是打印警告和用户身份验证
接下来记录它打印
对于身份验证,我还使用外部 HTTP 身份验证
我可以同时使用HTTP auth
和SASL
吗?还是我应该禁用HTTP auth
?如果是,那么当用户连接时如何采取一些措施,比如我们在 HTTP Auth 中有密码和用户等参数。
进行了提交,但也没有帮助任何建议都将不胜感激。
authentication - XMPP,Ejebberd 身份验证机制
我想问一下是否有可能在 ejabberd 配置中强制使用身份验证机制。当前,ejabberd 服务器正在提供可用的身份验证机制列表。
在 ejabberd 日志中,我们可以看到列表:
一些用户(在我们的例子中是 CPE(路由器、机顶盒))能够使用 SCRAM-SHA,其中一些用户只能使用 PLAIN 方法等。
是否可以强制 xmpp 服务器只提供一种方法?