Sdílet prostřednictvím


Integrace služby Azure Cosmos DB pro MongoDB s konektorem služby

Tato stránka ukazuje podporované metody ověřování a klienty a ukazuje ukázkový kód, který můžete použít k připojení služby Azure Cosmos DB pro MongoDB k jiným cloudovým službám pomocí konektoru služby. Stále se můžete připojit ke službě Azure Cosmos DB for MongoDB v jiných programovacích jazycích bez použití konektoru služby. Tato stránka také zobrazuje výchozí názvy proměnných prostředí a hodnoty (nebo konfiguraci Spring Boot), které získáte při vytváření připojení služby.

Podporované výpočetní služby

Konektor služby se dá použít k připojení následujících výpočetních služeb ke službě Azure Cosmos DB pro MongoDB:

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Podporované typy ověřování a typy klientů

Následující tabulka ukazuje, které kombinace typů klientů a metod ověřování se podporují pro připojení výpočetní služby ke službě Azure Cosmos DB pro MongoDB pomocí konektoru služby. "Ano" označuje, že kombinace je podporována, zatímco "Ne" označuje, že není podporována.

Typ klienta Spravovaná identita přiřazená systémem Spravovaná identita přiřazená uživatelem Tajný kód / připojovací řetězec Instanční objekt
.NET Ano Ano Ano Yes
Java Ano Ano Ano Yes
Java – Spring Boot No No Ano No
Node.js Ano Ano Ano Yes
Python Ano Ano Ano Yes
Go Ano Ano Ano Yes
Nic Ano Ano Ano Yes

Tato tabulka označuje, že jsou podporovány všechny kombinace typů klientů a metod ověřování v tabulce, s výjimkou typu klienta Java – Spring Boot, který podporuje pouze metodu Secret / připojovací řetězec. Všechny ostatní typy klientů můžou k připojení ke službě Azure Cosmos DB for MongoDB pomocí konektoru služby použít některou z metod ověřování.

Výchozí názvy proměnných prostředí nebo vlastnosti aplikace a ukázkový kód

Pomocí níže uvedených podrobností o připojení připojte výpočetní služby ke službě Azure Cosmos DB. Tato stránka také zobrazuje výchozí názvy proměnných prostředí a hodnoty (nebo konfiguraci Spring Boot), které získáte při vytváření připojení služby a také vzorový kód. V každém příkladu níže nahraďte zástupné texty <mongo-db-admin-user>, <password>, <Azure-Cosmos-DB-API-for-MongoDB-account><subscription-ID>, <resource-group-name>, , <client-secret>a <tenant-id> vlastními informacemi. Další informace o konvencích vytváření názvů najdete v interním článku o konektoru služby.

Spravovaná identita přiřazená systémem

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adresa URL pro získání připojovací řetězec https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Rozsah spravované identity https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Váš koncový bod prostředku https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Ukázkový kód

Pokud se chcete připojit ke službě Azure Cosmos DB for MongoDB pomocí spravované identity přiřazené systémem, projděte si následující postup a kód.

  1. Instalace závislostí

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Získejte přístupový token pro spravovanou identitu nebo instanční objekt pomocí klientské knihovny Azure.Identity. Použijte přístupový token a AZURE_COSMOS_LISTCONNECTIONSTRINGURL získejte připojovací řetězec. Získejte informace o připojení z proměnných prostředí přidaných konektorem služby a připojte se ke službě Azure Cosmos DB for MongoDB. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Spravovaná identita přiřazená uživatelem

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adresa URL pro získání připojovací řetězec https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Rozsah spravované identity https://management.azure.com/.default
AZURE_COSMOS_CLIENTID ID klienta <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Váš koncový bod prostředku https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Ukázkový kód

Pokud se chcete připojit ke službě Azure Cosmos DB pro MongoDB pomocí spravované identity přiřazené uživatelem, projděte si následující postup a kód.

  1. Instalace závislostí

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Získejte přístupový token pro spravovanou identitu nebo instanční objekt pomocí klientské knihovny Azure.Identity. Použijte přístupový token a AZURE_COSMOS_LISTCONNECTIONSTRINGURL získejte připojovací řetězec. Získejte informace o připojení z proměnných prostředí přidaných konektorem služby a připojte se ke službě Azure Cosmos DB for MongoDB. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Connection string

Upozorňující

Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Ověřovací tok popsaný v tomto postupu vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok byste měli použít jenom v případě, že jiné bezpečnější toky, jako jsou spravované identity, nejsou přijatelné.

Typ klienta SpringBoot

Výchozí název proměnné prostředí Popis Příklad hodnoty
spring.data.mongodb.database Vaše databáze <database-name>
spring.data.mongodb.uri Identifikátor URI databáze mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

Další typy klientů

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_CONNECTIONSTRING Rozhraní MongoDB API připojovací řetězec mongodb://<mongo-db-admin-user>:<password>@<mongo-db-server>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<mongo-db-server>@

Ukázkový kód

Pokud se chcete připojit ke službě Azure Cosmos DB for MongoDB pomocí připojovací řetězec, projděte si následující kroky a kód.

  1. Nainstalujte závislost.

    dotnet add package MongoDb.Driver
    
  2. Získejte připojovací řetězec z proměnné prostředí přidané konektorem služby a připojte se ke službě Azure Cosmos DB for MongoDB.

    using MongoDB.Driver;
    
    var connectionString = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING");
    var client = new MongoClient(connectionString);
    

Instanční objekt

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTCONNECTIONSTRINGURL Adresa URL pro získání připojovací řetězec https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<Azure-Cosmos-DB-API-for-MongoDB-account>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE Rozsah spravované identity https://management.azure.com/.default
AZURE_COSMOS_CLIENTID ID klienta <client-ID>
AZURE_COSMOS_CLIENTSECRET Tajný klíč klienta <client-secret>
AZURE_COSMOS_TENANTID ID vašeho tenanta <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Váš koncový bod prostředku https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Ukázkový kód

Informace o připojení ke službě Azure Cosmos DB for MongoDB pomocí instančního objektu najdete v následujících krocích a kódu.

  1. Instalace závislostí

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Získejte přístupový token pro spravovanou identitu nebo instanční objekt pomocí klientské knihovny Azure.Identity. Použijte přístupový token a AZURE_COSMOS_LISTCONNECTIONSTRINGURL získejte připojovací řetězec. Získejte informace o připojení z proměnných prostředí přidaných konektorem služby a připojte se ke službě Azure Cosmos DB for MongoDB. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Net.Http;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using MongoDB.Driver;
    using Azure.Identity;
    using System.Text.Json;
    
    var endpoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT");
    var listConnectionStringUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
    var scope = Environment.GetEnvironmentVariable("AZURE_COSMOS_SCOPE");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // var tokenProvider = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // var tokenProvider = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID");
    // var clientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    // var clientSecret = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET");
    // var tokenProvider = new ClientSecretCredential(tenantId, clientId, clientSecret);
    
    // Acquire the access token. 
    AccessToken accessToken = await tokenProvider.GetTokenAsync(
        new TokenRequestContext(scopes: new string[]{ scope }));
    
    // Get the connection string.
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
    var response = await httpClient.POSTAsync(listConnectionStringUrl);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    string connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Další kroky

Další informace o konektoru Service Connector najdete v následujících kurzech.