0

Mongoのドキュメントには、認証が有効になっている場合、およびadminデータベースに追加されたユーザーの場合、これらのユーザーは、adminデータベースレベルで付与された権限を使用して、Mongoの他のデータベースにアクセスできる必要があると記載されています。

「adminデータベースは一意です。adminデータベースへの通常のアクセス権を持つユーザーは、すべてのデータベースへの読み取りおよび書き込みアクセス権を持っています。adminデータベースへの読み取り専用アクセス権を持つユーザーは、すべてのデータベースへの読み取り専用アクセス権を持っています。」 http://docs.mongodb.org/manual/administration/security/

ただし、C#ライブラリバージョン1.7.0.4714を使用したテストでは、そうではありません。特定のデータベースで作成されたアカウントのみがそのデータベースにアクセスできます。

接続文字列のクレデンシャルを使用して、C#のデータベースレベルでクレデンシャルを明示的に設定してテストしました

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

この予想される動作かどうか誰かが知っていますか?または解決策を提案できます。

4

3 に答える 3

0

これはmongodbの問題ではありません。次のようにmongodbシェルから認証できると確信しています。

use admin
db.auth(user, pass)

これはmongodbc#ドライバーのトリックです。ずっと前に、私はこれを理解するためにc#ドライバーコードを読むのに少し時間を費やしました。

したがって、接続文字列は次のようになります。

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

(admin)管理者ユーザーを介して認証しようとしていることをドライバーに伝えるための秘訣。

于 2013-01-31T20:24:16.423 に答える
0

答えはすでにstackoverflowに投稿されています:)

Mongodb C# ドライバー - 管理者認証を使用して他のデータベースにアクセスできない

そのアカウントを使用するには、使用するユーザー名の後に (admin) を付ける必要があります。

于 2013-01-31T20:22:58.157 に答える
0

管理データベースに対する認証で接続する別の方法があります。

欠点は、すべての情報を接続文字列だけに詰め込むのではなく、接続オブジェクト全体をセットアップする必要があることです。

のような接続文字列で 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/

于 2015-03-16T21:51:58.160 に答える