MongoDB重连机制解析及Spring Boot MongoClient密码更新咨询
MongoDB客户端密码轮换与重连凭证使用问题
问题背景
我在Spring Boot应用中,启动时通过MongoClient连接MongoDB,使用MongoCredential.createPlainCredential传入从HashiCorp Vault通过REST调用获取的用户名和密码。现在需要解决的核心需求是:当Vault中的密码发生轮换后,如何更新MongoClient Bean中的密码?
前置疑问
在实现密码更新功能前,我需要先明确一个关键问题:运行中的应用,当MongoDB连接断开后自动重连时,使用的是初始配置的密码,还是其他类型的凭证?
测试过程
我针对重连场景做了以下测试:
- 应用启动,成功建立MongoDB连接
- 应用正常运行
- 断开网络,触发MongoDB连接中断,日志输出预期的错误信息
- 恢复网络后,MongoDB自动重连,日志显示连接已重建,但我无法确认重连时使用的是初始密码还是令牌,且调试断点并未进入
MongoClient相关逻辑
使用依赖
当前使用的Mongo驱动版本:
- mongodb-driver-sync - 4.6.1
- mongodb-driver-core - 4.6.1
已查阅信息
- 关于“运行时更新MongoClient凭证”的社区讨论,提到了相关实现思路
- MongoDB官方JIRA(编号JAVA-3896)已关闭,备注说明官方正采用基于OIDC的方案解决凭证轮换问题
核心疑惑
当前使用的4.6.1版本Mongo Java Driver,是否已经采用OIDC方式连接?也就是仅在首次连接时使用密码,后续重连均依赖令牌?如果是这种机制,是不是就不需要手动更新MongoClient Bean的密码了?
内容的提问来源于stack exchange,提问作者NS22
相关产品推荐
相关产品推荐

