如果未在config中指定,mongo客户端如何知道要使用哪种authMechanism?

时间:2020-11-05 17:20:01

标签: mongodb authentication sha256

我们最近将数据库迁移到了Mongo 4.0。我们为该应用程序创建了一个新用户,并且从数据库端启用了SCRAM-SHA-256。令我惊讶的是,我们正在使用的现有mongo驱动程序为3.8.2,可以正常运行,而无需在应用程序端对配置进行任何更改,我尚未指定 authMechanism 配置中的参数。客户端如何知道身份验证机制?

我的理解是默认机制将是SCRAM-SHA-1,并且身份验证应失败。我检查了一下代码,但从某些博客中发现它是如何工作的,我发现我会使用 saslSupportedMechs 来调用isMaster,它将提供受支持的SASL机制,我的理解正确吗?在vertx mongo客户端中哪里可以找到此代码?

MongoConnnection字符串:

mongoConnectionJson = new JsonObject().put("connection_string", "mongodb://testhost:6005")
                .put("db_name", "test_db")
                .put("username", "test_sha-256")
                .put("password", "test_sha-256")
                .put("authSource", "test_db");

1 个答案:

答案 0 :(得分:1)

理论上,默认的auth机制选择可能因一个驱动程序而异,但对于Ruby驱动程序,应类似于the description here

  • 对于MongoDB 4.0和更高版本,客户端与服务器执行SCRAM机制协商。如果客户端配置中指定的用户允许使用SCRAM-SHA-256进行身份验证,则使用SCRAM-SHA-256进行身份验证。否则,将使用SCRAM-SHA-1。
  • 对于MongoDB 3.0到3.6,使用SCRAM-SHA-1。
  • 对于MongoDB 2.6,使用MONGODB-CR。