C# 带有资源令牌的Mongo客户端API

C# 带有资源令牌的Mongo客户端API,c#,mongodb,azure,azure-cosmosdb,azure-cosmosdb-mongoapi,C#,Mongodb,Azure,Azure Cosmosdb,Azure Cosmosdb Mongoapi,我一直在尝试将Mongo API cosmos帐户用于多个数据库,并希望为各个资源生成资源令牌。我看到了文档数据库的实现,如下所示 client = new DocumentClient(new Uri(endpointUrl), resourceToken); 然而,我正在寻找与Mongo.Driver相关的实现 MongoClientSettings settings = new MongoClientSettings(); settings.Server = new Mo

我一直在尝试将Mongo API cosmos帐户用于多个数据库,并希望为各个资源生成资源令牌。我看到了文档数据库的实现,如下所示

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的post调用,但是如果有人实现了,我正在寻找与Mongo客户端相关的实现。

不幸的是,我不认为它可以在C#Mongo DB驱动程序中实现。基于:

Azure Cosmos DB实现了常见NoSQL数据库的有线协议 包括Cassandra、MongoDB、Gremlin和Azure表存储。通过 直接提供有线协议的本机实现 在Cosmos DB内部,它高效地允许现有客户端SDK、驱动程序、, 以及NoSQL数据库与Cosmos DB交互的工具 透明的。Cosmos DB不使用数据库的任何源代码 用于为任何NoSQL数据库提供有线兼容API

默认情况下,使用Azure Cosmos DB的API创建的新帐户 MongoDB与MongoDB wire协议的3.6版兼容。 任何理解此协议版本的MongoDB客户端驱动程序 应该能够本地连接到Cosmos DB

Cosmos db mongo api只为mongo db实现有线协议,它没有针对mongo db的任何特定sdk。以及其他mongo db驱动程序,如mongo c#driver或mongoose等,它们是为mongo db而不是为cosmos db mongo api构建的。因此,这些驱动程序不能直接支持资源令牌功能。不能用资源令牌替换主密钥

如果确实要使用资源令牌,可以使用:

1.您在问题中提到的REST API


2.将mongo db迁移到cosmos db sql api。请参阅此链接:

@Darey不客气,Darey。如果你认为我的回答对你有益,请接受我的回答,谢谢。