Dela via


Integrera Azure Cosmos DB för MongoDB med Service Anslut or

Den här sidan visar autentiseringsmetoder och klienter som stöds och visar exempelkod som du kan använda för att ansluta Azure Cosmos DB för MongoDB till andra molntjänster med hjälp av Service Anslut or. Du kanske fortfarande kan ansluta till Azure Cosmos DB för MongoDB på andra programmeringsspråk utan att använda Service Anslut or. På den här sidan visas även standardnamn och värden för miljövariabler (eller Spring Boot-konfiguration) som du får när du skapar tjänstanslutningen.

Beräkningstjänster som stöds

Tjänst Anslut eller kan användas för att ansluta följande beräkningstjänster till Azure Cosmos DB för MongoDB:

  • Azure App Service
  • Azure Functions
  • Azure Container Apps
  • Azure Spring Apps

Autentiseringstyper och klienttyper som stöds

Tabellen nedan visar vilka kombinationer av klienttyper och autentiseringsmetoder som stöds för att ansluta beräkningstjänsten till Azure Cosmos DB för MongoDB med hjälp av Service Anslut or. Ett "Ja" anger att kombinationen stöds, medan ett "Nej" anger att den inte stöds.

Klienttyp Systemtilldelad hanterad identitet Användartilldelad hanterad identitet Hemlighet/anslutningssträng Tjänstens huvudnamn
.NET Ja Ja Ja Ja
Java Ja Ja Ja Ja
Java – Spring Boot Nej No Ja Nej
Node.js Ja Ja Ja Ja
Python Ja Ja Ja Ja
Kör Ja Ja Ja Ja
None Ja Ja Ja Ja

Den här tabellen anger att alla kombinationer av klienttyper och autentiseringsmetoder i tabellen stöds, förutom klienttypen Java – Spring Boot, som endast stöder metoden Secret/anslutningssträng. Alla andra klienttyper kan använda någon av autentiseringsmetoderna för att ansluta till Azure Cosmos DB for MongoDB med hjälp av Service Anslut or.

Standardnamn för miljövariabler eller programegenskaper och exempelkod

Använd anslutningsinformationen nedan för att ansluta beräkningstjänster till Azure Cosmos DB. På den här sidan visas även standardnamn och värden för miljövariabler (eller Spring Boot-konfiguration) som du får när du skapar tjänstanslutningen, samt exempelkod. För varje exempel nedan ersätter du platshållartexterna <mongo-db-admin-user>, , <Azure-Cosmos-DB-API-for-MongoDB-account><password>, <subscription-ID>, <resource-group-name>, <client-secret>och <tenant-id> med din egen information. Mer information om namngivningskonventioner finns i artikeln Service Anslut eller internals.

Systemtilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL:en för att hämta anslutningssträng 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 Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för MongoDB med hjälp av en systemtilldelad hanterad identitet.

  1. Installera beroenden

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTCONNECTIONSTRINGURL för att hämta anslutningssträng. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Anslut eller och anslut till Azure Cosmos DB för MongoDB. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    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 according to the authentication type.
    // 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);
    

Användartilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL:en för att hämta anslutningssträng 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 Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Ditt klient-ID <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för MongoDB med hjälp av en användartilldelad hanterad identitet.

  1. Installera beroenden

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTCONNECTIONSTRINGURL för att hämta anslutningssträng. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Anslut eller och anslut till Azure Cosmos DB för MongoDB. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    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 according to the authentication type.
    // 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

SpringBoot-klienttyp

Standardnamn för miljövariabel beskrivning Exempelvärde
spring.data.mongodb.database Din databas <database-name>
spring.data.mongodb.uri Din databas-URI 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>@

Andra klienttyper

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_CONNECTIONSTRING MongoDB API anslutningssträng 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>@

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för MongoDB med hjälp av en anslutningssträng.

  1. Installera beroende.

    dotnet add package MongoDb.Driver
    
  2. Hämta anslutningssträng från miljövariabeln som lagts till av Service Anslut eller och anslut till Azure Cosmos DB för MongoDB.

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

Tjänstens huvudnamn

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_LISTCONNECTIONSTRINGURL URL:en för att hämta anslutningssträng 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 Ditt omfång för hanterad identitet https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Ditt klient-ID <client-ID>
AZURE_COSMOS_CLIENTSECRET Din klienthemlighet <client-secret>
AZURE_COSMOS_TENANTID Ditt klientorganisations-ID <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Cosmos DB för MongoDB med hjälp av tjänstens huvudnamn.

  1. Installera beroenden

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbiblioteket Azure.Identity. Använd åtkomsttoken och AZURE_COSMOS_LISTCONNECTIONSTRINGURL för att hämta anslutningssträng. Hämta anslutningsinformationen från miljövariablerna som lagts till av Service Anslut eller och anslut till Azure Cosmos DB för MongoDB. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

    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 according to the authentication type.
    // 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);
    

Nästa steg

Följ självstudierna nedan om du vill veta mer om Service Anslut or.