如何针对VM中运行的Cosmos DB仿真器对Node.js MongoClient进行身份验证?

时间:2019-08-31 01:07:16

标签: azure-cosmosdb azure-cosmosdb-mongoapi

我在OS X上,并且尝试使用基于Node.js的MongoClient连接到在Parallels VM中运行的CosmosDB仿真器。我可以连接它,但是查询失败,并显示身份验证错误。

我首先查看了this document,但是我不得不对其稍加修改以使主机连接到VM:

Microsoft.Azure.Cosmos.Emulator.exe /AllowNetworkAccess /EnableMongoDbEndpoint /Key=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

我的连接字符串: mongodb://vm1:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@vm1:10255/admin?ssl=true

在我能够连接它之后,我不知道如何使用ServerCertificateCustomValidationCallback提供与MongoClient等效的功能。

我收到的身份验证错误消息:

[8/31/19 12:40:54 AM] System.Private.CoreLib: Exception while executing function: Functions.datasets. System.Private.CoreLib: Result: Failure
[8/31/19 12:40:54 AM] Exception: MongoError: Authentication Failed.  ConnectionId 1a87b001-e1e6-4918-9a1c-92db5719c670  ActivityId: 8c071a01-0000-0000-0000-000000000000
[8/31/19 12:40:54 AM] Stack: MongoError: Authentication Failed.  ConnectionId 1a87b001-e1e6-4918-9a1c-92db5719c670  ActivityId: 8c071a01-0000-0000-0000-000000000000
[8/31/19 12:40:54 AM]     at /Users/Documents/Projects/DataStore/node_modules/mongodb-core/lib/connection/pool.js:598:61
[8/31/19 12:40:54 AM]     at authenticateStragglers (/Users/Documents/Projects/DataStore/node_modules/mongodb-core/lib/connection/pool.js:516:16)
[8/31/19 12:40:54 AM]     at Connection.messageHandler (/Users/Documents/Projects/DataStore/node_modules/mongodb-core/lib/connection/pool.js:552:5)
[8/31/19 12:40:54 AM]     at emitMessageHandler (/Users/Documents/Projects/DataStore/node_modules/mongodb-core/lib/connection/connection.js:309:10)
[8/31/19 12:40:54 AM]     at TLSSocket.<anonymous> (/Users/Documents/Projects/DataStore/node_modules/mongodb-core/lib/connection/connection.js:452:17)
[8/31/19 12:40:54 AM]     at TLSSocket.emit (events.js:182:13)
[8/31/19 12:40:54 AM]     at addChunk (_stream_readable.js:283:12)
[8/31/19 12:40:54 AM]     at readableAddChunk (_stream_readable.js:264:11)
[8/31/19 12:40:54 AM]     at TLSSocket.Readable.push (_stream_readable.js:219:10)
[8/31/19 12:40:54 AM]     at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17).

1 个答案:

答案 0 :(得分:0)

我使用了这个连接字符串:

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@vm1:10255/admin?ssl=true

请注意,localhost仍用作用户名。 vm1被指定为@之后的机器名称。