You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mod_cdr_mongodb插入FreeSWITCH CDR时认证失败求助

问题描述

我尝试用mod_cdr_mongodb将FreeSWITCH的CDR(呼叫详细记录)插入MongoDB。未设置用户名和密码时,模块可正常加载,通话挂断后CDR也能成功插入MongoDB集合;但设置用户名和密码后,加载模块时出现认证失败错误:

2023-05-10 04:39:42.328309 78.30% [ERR] mod_cdr_mongodb.c:123 mongo_cmd_authenticate: authentication failed

2023-05-10 04:39:42.328309 78.30% [CRIT] switch_loadable_module.c:1755 Error Loading module /usr/local/freeswitch/mod/mod_cdr_mongodb.so

但用相同的用户名和密码在终端可正常连接MongoDB并手动插入数据,唯独使用mod_cdr_mongodb模块时出现认证错误,恳请协助解决。

我的配置文件如下:

<configuration name="cdr_mongodb.conf" description="MongoDB CDR logger">
  <settings>
    <param name="host" value="127.0.0.1"/>
    <param name="port" value="27017"/>
    <param name="namespace" value="DB.cdrs"/>
    <param name="username" value="MONGO_USERNAME"/>
    <param name="password" value="MONGO_PASSWORD"/>
    <param name="log-b-leg" value="false"/>
  </settings>
</configuration>
排查与解决方法
  • 指定认证数据库
    mod_cdr_mongodb默认可能使用admin库进行认证,但你的用户可能创建在配置里的业务库(比如DB)下。可在配置中添加auth-db参数明确指定认证数据库:

    <param name="auth-db" value="DB"/>
    

    如果用户是在admin库创建的,就将auth-db的值设为admin。

  • 检查认证机制兼容性
    老版本的mod_cdr_mongodb可能只支持SCRAM-SHA-1或旧的MONGODB-CR认证机制,而新版MongoDB默认使用SCRAM-SHA-256。可通过以下步骤处理:

    1. 在MongoShell中执行db.getUser("MONGO_USERNAME"),查看用户的mechanisms字段确认当前认证机制。
    2. 若模块不支持当前机制,要么修改用户的认证机制为模块兼容类型,要么升级mod_cdr_mongodb到支持新机制的版本。
  • 处理密码中的特殊字符
    如果密码包含&、<、>等XML特殊字符,直接写入配置会被XML解析器转义,导致密码错误。可将密码用CDATA包裹:

    <param name="password"><![CDATA[MONGO_PASSWORD]]></param>
    
  • 验证版本兼容性
    若MongoDB为4.0+版本,而mod_cdr_mongodb版本过旧,可能存在兼容性问题。尝试升级FreeSWITCH的mod_cdr_mongodb模块到对应版本,确保两者版本匹配。

  • 检查MongoDB绑定地址
    确认MongoDB的mongod.conf中net.bindIp设置为127.0.0.1(或包含FreeSWITCH所在IP),避免因绑定限制导致连接认证失败。

内容的提问来源于stack exchange,提问作者HP371

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:42:14