Монго клиентский API с маркером ресурса - PullRequest
1 голос
/ 29 октября 2019

Я пытался использовать космическую учетную запись Mongo API с несколькими базами данных и хотел создать маркер ресурса для отдельных ресурсов. Я вижу реализацию для Document DB, как показано ниже.

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, если кто-то реализовал.

1 Ответ

0 голосов
/ 30 октября 2019

К сожалению, я не думаю, что это может быть реализовано в драйвере C # Mongo DB. На основе Совместимость протокола Wire * :

Azure Cosmos DB реализует протоколы общих протоколовБазы данных NoSQL, включая Cassandra, MongoDB, Gremlin и Azure Tables Storage. Предоставляя собственную реализацию проводных протоколов непосредственно и эффективно внутри Cosmos DB, она позволяет прозрачно взаимодействовать с существующими клиентскими SDK, драйверами и инструментами баз данных NoSQL с Cosmos DB. Cosmos DB не использует какой-либо исходный код баз данных для предоставления проводно-совместимых API-интерфейсов для любой из баз данных NoSQL.

По умолчанию новые учетные записи, созданные с помощью API Azure Cosmos DB для MongoDB, совместимы с версией 3.6MongoDB проводной протокол. Любой клиентский драйвер MongoDB, который понимает эту версию протокола, должен иметь возможность прямого подключения к базе данных Cosmos DB.

Cosmos db mongo api реализует только проводные протоколы для базы данных Mongo, у него нет специального sdk для mongo. дб. И другие драйверы mongo db, такие как mongo c # driver или mongoose и т. Д., Они созданы для dong монго, а не для космоса db mongo api. Таким образом, функция маркера ресурса не может напрямую поддерживаться этими драйверами. Вы не можете заменить мастер-ключ токеном ресурса.

Если вы действительно хотите использовать токен ресурса, вы можете использовать:

1.REST API, как вы упомянули в своем вопросе

2. Перенести dong mongo в космос db sql api. Пожалуйста, обратитесь по этой ссылке: https://docs.microsoft.com/en-us/azure/cosmos-db/import-data

...