无法通过mongo的官方node.js驱动程序进行身份验证,只能通过mongo shell进行身份验证。 (MongoDB Cloud Manager副本部署)

时间:2015-12-27 14:07:55

标签: mongodb authentication driver replicaset database

我正在尝试对我的副本集进行身份验证,该副本集是通过Mongo Cloud Manager部署的,但我无法弄清楚它失败的原因。

以下是数据库 abcd 的用户:

abcdRepliaSet:PRIMARY> use abcd
switched to db abcd
show users
abcdRepliaSet:PRIMARY> show users
{
 "_id" : "abcd.abcdAppUser",
 "user" : "abcdAppUser",
 "db" : "abcd",
 "roles" : [
 {
 "role" : "readWrite",
 "db" : "abcd"
 }
 ]
}

我可以通过mongo shell成功连接到它:

mongo adbcd-mongo-mms.cloudapp.net:57002 -u adbcd AppUser -p hidden --authenticationDatabase adbcd

但是,我无法使用这个简单的代码:

MongoClient.connect("mongodb://abcdAppUser:hidden@abcd-mongo-mms.cloudapp.net:57001,abcd-mongo-mms.cloudapp.net:57002,abcd-mongo-mms.cloudapp.net:57003/abcd?replicaSet=abcdRepliaSet&authSource=abcd&authMechanism=SCRAM-SHA-1",
 function(err, db) {
 if(err) throw err;
 else console.log(db);
});

我也非常确定我的authMechanism是SCRAM-SHA-1,因为我已经使用mongoldb v.3.0.7添加了用户并且我还使用了确认它:

db.system.users.find({user:"abcdAppUser"}).pretty()

当我尝试通过nodejs app验证时,这是mongod的日志:

2015-12-22T13:31:33.823+0000 I ACCESS   [conn30286] SCRAM-SHA-1 authentication failed for abcdAppUser on abcd from client 10.0.0.10 ; AuthenticationFailed SCRAM-SHA-1 authentication failed, storedKey mismatch
2015-12-22T13:31:33.894+0000 I ACCESS   [conn30288] SCRAM-SHA-1 authentication failed for abcdAppUser on abcd from client 10.0.0.10 ; AuthenticationFailed SCRAM-SHA-1 authentication failed, storedKey mismatch
2015-12-22T13:31:34.051+0000 I ACCESS   [conn30287] SCRAM-SHA-1 authentication failed for abcdAppUser on abcd from client 10.0.0.10 ; AuthenticationFailed SCRAM-SHA-1 authentication failed, storedKey mismatch
2015-12-22T13:31:34.124+0000 I ACCESS   [conn30289] SCRAM-SHA-1 authentication failed for abcdAppUser on abcd from client 10.0.0.10 ; AuthenticationFailed SCRAM-SHA-1 authentication failed, storedKey mismatch
2015-12-22T13:31:34.206+0000 I ACCESS   [conn30290] SCRAM-SHA-1 authentication failed for abcdAppUser on abcd from client 10.0.0.10 ; AuthenticationFailed SCRAM-SHA-1 authentication failed, storedKey mismatch
2015-12-22T13:31:34.263+0000 I NETWORK  [conn30288] end connection 94.61.85.76:53102 (17 connections now open)
2015-12-22T13:31:34.264+0000 I NETWORK  [conn30286] end connection 94.61.85.76:61293 (17 connections now open)
2015-12-22T13:31:34.263+0000 I NETWORK  [conn30287] end connection 94.61.85.76:58194 (17 connections now open)
2015-12-22T13:31:34.263+0000 I NETWORK  [conn30289] end connection 94.61.85.76:58537 (17 connections now open)
2015-12-22T13:31:34.264+0000 I NETWORK  [conn30290] end connection 94.61.85.76:57720 (13 connections now open)
2015-12-22T13:31:37.185+0000 I NETWORK  [conn30281] end connection 10.0.0.8:34322 (12 connections now open)

我还确保我的node.js驱动程序与SCRAM兼容,确实如此。在这一点上,我真的不明白为什么它失败了......任何帮助都会受到欢迎!

提前谢谢你。

此致 佩德罗

1 个答案:

答案 0 :(得分:2)

好吧,我不确定我做错了什么,但我现在已经升级了authSchema(非常确定它已经在v.5上,无论如何),删除了同一个用户,然后再将其添加回来相同的密码和角色。它现在有效。去图......此外,这可能是由documentation引起的,但我不确定,因为我现在已经知道之前安装了什么版本(开发环境,所以请原谅我缺少适当的日志记录:P)

无论如何,认为这个答案最终会帮助某人......