Tigase 自定义数据库

Posted

技术标签:

【中文标题】Tigase 自定义数据库【英文标题】:Tigase Custom Database 【发布时间】:2019-08-30 04:09:28 【问题描述】:

我正在尝试集成 Tigase 以使用我的自定义 mysql 数据库来验证用户、获取名册和 vCard。我按照https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication 的描述设置了“自定义身份验证连接器”,但是,它似乎只对我已经添加到本地 Tigase 数据库的用户进行身份验证。 Tigase 是否可以在用户成功通过身份验证后自动创建用户?而且,如何设置 Tigase 以从我的自定义数据库中获取用户的名册和/或 vCard?

我已尝试按照https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication 中的说明设置“自定义身份验证连接器”,但是,对于仅存在于我的自定义数据库中的用户,它允许登录,但在我尝试创建房间时抛出错误或将用户添加到我的名册中,如“tigase.db.UserNotFoundException:用户不存在”和“警告:数据包的 NotAuthorizedException”。

这是我使用的基于https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication的配置:

authRepository 
    default () 
        cls = 'tigase.db.jdbc.TigaseCustomAuth'
        'data-source' = 'db-custom'
        'conn-valid-query' = 'select 1'
        'user-account-status-query' = 'select onlineStatus AS account_status from tbl_contacts where id = ?'
        'user-login-query' = "select vUserId AS user_id from tbl_contacts where vUserId = ? AND vPassword = ?"

    

我希望能够将 Tigase 与我的自定义数据库集成,以便它从我的数据库中进行身份验证、获取名册和 vcard 信息。

【问题讨论】:

【参考方案1】:

您的问题的答案:“Tigase 是否可以在用户成功通过身份验证后自动创建用户”实际上在链接文档中得到了回答:

要使用户帐户在身份验证数据库和主用户数据库之间保持同步,您必须在数据库连接 URL 的末尾添加以下选项:autoCreateUser=true

目前仅通过更改/调整配置无法从自定义存储库中检索用户数据。

如果您想使用自己的数据库完全管理用户,那么您必须自己实现UserRepository 接口(您可以查看JDBCRepository 实现以了解如何去做)

【讨论】:

感谢 Wojtek,我一定错过了某个地方的 autoCreateUser。关于 JDBCRepository,谢谢,我现在看看。

以上是关于Tigase 自定义数据库的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义元素或属性的 Tigase-XMPP 消息包

自定义插件不记录

Tigase、Openfire 和任何其他开源 XMPP 服务器之间的比较

Tigase 组件中的 addOutPacket

当用户的数据连接因 tigase 断开时,我如何解决不获取 XMPP 状态更新的问题

Linux搭建XMPPserverTigase(Sparkclient測试)