我一直在尝试将Mongo API宇宙帐户用于多个数据库,并希望为各个资源生成资源令牌。我正在看到文档数据库的实现,如下所示。
client = new DocumentClient(new Uri(endpointUrl), resourceToken);
但是,我正在寻找与Mongo.Driver相关的实现
MongoClientSettings settings = new MongoClientSettings();
settings.Server = new MongoServerAddress(host, 10255);
settings.UseSsl = true;
settings.SslSettings = new SslSettings();
settings.SslSettings.EnabledSslProtocols = SslProtocols.Tls12;
MongoIdentity identity = new MongoInternalIdentity(dbName, userName);
MongoIdentityEvidence evidence = new PasswordEvidence(tokepass2);
settings.Credential = new MongoCredential("SCRAM-SHA-1", identity, evidence);
MongoClient client = new MongoClient(settings);
我正在尝试用生成的资源令牌替换“ tokepass2”。但这是行不通的,最终导致异常
One or more errors occurred. (Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1.)
我知道我们可以在标头中使用令牌进行基于REST的后调用,但是我正在寻找与Mongo Client相关的实现(如果已实现)。
答案 0 :(得分:0)
不幸的是,我不认为它可以在C#Mongo DB驱动程序中实现。基于Wire protocol compatibility:
Azure Cosmos DB实现了常见NoSQL数据库的有线协议 包括Cassandra,MongoDB,Gremlin和Azure Tables Storage。通过 直接提供有线协议的本地实现 高效地在Cosmos DB中使用,它允许现有的客户端SDK,驱动程序, SQL数据库的工具和工具以与Cosmos DB进行交互 透明地。 Cosmos DB不使用数据库的任何源代码 为任何NoSQL数据库提供与有线兼容的API。
默认情况下,使用Azure Cosmos DB的API创建的新帐户用于 MongoDB与MongoDB有线协议的3.6版兼容。 任何了解此协议版本的MongoDB客户端驱动程序 应该能够本地连接到Cosmos DB。
Cosmos db mongo api仅对Mongo DB实现有线协议,而对mongo db没有任何特定的sdk。以及其他mongo db驱动程序,例如mongo c#驱动程序或mongoose等,它们是为mongo db构建的,而不是为cosmos db mongo api构建的。因此,这些驱动程序无法直接支持资源令牌功能。您不能用资源令牌替换主密钥。
如果您想使用资源令牌,则可以使用:
1。您在问题中提到的REST API
2。将mongo db迁移到cosmos db sql api。请参考以下链接:https://docs.microsoft.com/en-us/azure/cosmos-db/import-data