0

次のユーザーは、 MongoDB 3.0.7に接続されたRobomongo 0.8.5を使用して生成されました。

問題点:

  • Robomongo で生成されたユーザーでは、CLI からログインできません。
  • CLI で生成されたユーザーでは、Robomongo を介してログインすることはできません (を使用auth=true)
  • ロボモンゴが全くログインしauth=trueない

Robomongo の起動時に認証を実行しなかったため、これらのテーブルが非認証モードで作成された可能性があります。

他の質問は他のさまざまなプログラミング言語と JSON スクリプトに関連していますが、このスキーマは Robomongo 自体によって作成されているため、有効である必要があります。

これにより、3 つの異なるケースでユーザーを認証する際にどのような問題が発生する可能性がありますか?

admin Usersを定義するテーブルadmin:

{
    "_id" : ObjectId("56616c9c273eba0cc996edc5"),
    "user" : "admin",
    "pwd" : "90f500568434c37b61c8c1ce05fdf3ae",
    "roles" : [ 
        "readWrite", 
        "dbAdmin"
    ]
}

test_db Usersadminから参照されるテーブルadmin:

{
    "_id" : ObjectId("56616cb1273eba0cc996edc7"),
    "user" : "admin",
    "userSource" : "admin",
    "roles" : [ 
        "readWrite", 
        "dbAdmin"
    ]
}

direct_db Usersを定義するテーブルuser:

{
    "_id" : ObjectId("56616edd273eba0cc996edcc"),
    "user" : "user",
    "pwd" : "3bcfc22a1cd6be41bc7814c13d3ce94c",
    "roles" : [ 
        "readWrite", 
        "dbAdmin"
    ]
}

コマンドライン出力:

> use admin;
switched to db admin
> db.auth( "admin", "password" );
Error: 18 Authentication failed.
0
> use test_db;
switched to db test_db
> db.auth( "admin", "password" );
Error: 18 Authentication failed.
0
> use direct_db;
switched to db direct_db
> db.auth( "user", "password" );
Error: 18 Authentication failed.
0

mongo.log:

2015-12-04T12:26:09.665+0100 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:5140 #272 (53 connections now open)
2015-12-04T12:26:09.685+0100 I ACCESS   [conn272]  authenticate db: admin { authenticate: 1, nonce: "xxx", user: "admin", key: "xxx" }
2015-12-04T12:26:09.685+0100 I ACCESS   [conn272] Failed to authenticate admin@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user admin@admin

興味深いことに、この CLI コマンドは の有無にかかわらず機能しますauth=true。でログインできましたがauth=ture、設定でのみ{ role: "readWrite", db: "root" }、次の行が重要です。

mongo --authenticationDatabase db_name -u username -p password
>>>Connected to Mongo CLI client...<<<
> db.createUser( 
  { 
    "user" : "admin", 
    "pwd": "password",  
    "roles" : [   
      { role: "readWrite", db: "root" }, 
      { role: "readWrite", db: "admin" }, 
      { role: "dbAdmin", db: "admin" },   
      { role: "readWrite", db: "test_db" }, 
      { role: "dbAdmin", db: "test_db" }
    ]  
})
>>>Successfully added user...<<<
> db.auth("admin","password")
1
4

0 に答える 0