【问题标题】:Mongo admin database credentials don't work in other databases on serverMongo 管理员数据库凭据在服务器上的其他数据库中不起作用
【发布时间】:2017-07-12 16:04:06
【问题描述】:

Mongo 的文档指出,启用身份验证后,对于添加到管理数据库的用户,这些用户应该能够访问 Mongo 中的其他数据库,并在管理数据库级别授予权限。

"admin 数据库是唯一的。对 admin 数据库具有正常访问权限的用户对所有数据库具有读写权限。对 admin 数据库具有只读权限的用户对所有数据库具有只读权限。" http://docs.mongodb.org/manual/administration/security/

但在使用 C# 库版本 1.7.0.4714 进行测试时,情况并非如此。 只有在特定数据库中创建的帐户才能访问该数据库。

我已经在连接字符串上使用凭据进行了测试 并通过在 C# 中的数据库级别显式设置凭据

server.GetDatabase(...
new MongoClient(a connectionString ...

有谁知道这是否是预期的行为?或者可以提出解决方案。

【问题讨论】:

标签: mongodb mongodb-.net-driver


【解决方案1】:

答案已经在stackoverflow上发布了:)

Mongodb C# driver - can't use admin authentication to access other databases

使用的用户名后面应该有 (admin) 才能使用该帐户。

【讨论】:

  • const string connectionString = "mongodb://someUserName(admin):somePassword@localhost:27020";
【解决方案2】:

这不是 mongodb 的问题。我相信您可以像这样从 mongodb shell 进行身份验证:

use admin
db.auth(user, pass)

这是一个 mongodb c# 驱动技巧。很久以前,为了理解这一点,我花了一些时间阅读 c# 驱动程序代码。

所以连接字符串应该是这样的:

mongodb://admin(admin):1@localhost:27020/myDb

(admin) 中的技巧是为了告诉驱动程序您将通过管理员用户进行身份验证。

【讨论】:

    【解决方案3】:

    还有另一种方法可以通过 admin 数据库的身份验证进行连接。

    缺点是您必须设置整个连接对象,而不是仅将所有信息打包在连接字符串上。

    而不是使用像这样的连接字符串来实例化 MongoClient

    var connectionString = "mongodb://localhost";
    var client = new MongoClient(connectionString);
    

    您可以创建一个 MongoClientSettings 对象,设置凭据(以及任何其他连接设置)并实例化传递该对象的客户端

    string authenticationDB = "admin"
    string authenticationUsername = "user"
    string authenticationPassword = "pass"
    MongoClientSettings settings = new MongoClientSettings();
    settings.Credentials = new[] { MongoCredential.CreateMongoCRCredential(authenticationDB, authenticationUsername, authenticationPassword) };
    
    settings.Servers = new[] { new MongoServerAddress("host_1"), new MongoServerAddress("host_2"), new MongoServerAddress("host_3") };
    settings.ConnectionMode = ConnectionMode.ReplicaSet;
    
    var client = new MongoClient(settings);
    var db = client.GetServer().GetDatabase(database);
    

    http://docs.mongodb.org/ecosystem/tutorial/authenticate-with-csharp-driver/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2018-02-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      相关资源
      最近更新 更多