Aracılığıyla paylaş


Hizmet Bağlayıcısı ile MongoDB için Azure Cosmos DB'yi tümleştirme

Bu sayfada desteklenen kimlik doğrulama yöntemleri ve istemcileri gösterilir ve MongoDB için Azure Cosmos DB'yi Service Connector kullanarak diğer bulut hizmetlerine bağlamak için kullanabileceğiniz örnek kod gösterilir. Hizmet Bağlayıcısı'nı kullanmadan mongoDB için Azure Cosmos DB'ye diğer programlama dillerinde bağlanmaya devam edebilirsiniz. Bu sayfada, hizmet bağlantısını oluştururken elde ettiğiniz varsayılan ortam değişkeni adları ve değerleri (veya Spring Boot yapılandırması) da gösterilir.

Desteklenen işlem hizmetleri

Hizmet Bağlayıcısı, aşağıdaki işlem hizmetlerini MongoDB için Azure Cosmos DB'ye bağlamak için kullanılabilir:

  • Azure App Service
  • Azure Container Uygulamaları
  • Azure İşlevleri
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Desteklenen kimlik doğrulama türleri ve istemci türleri

Aşağıdaki tabloda, hizmet bağlayıcısı kullanarak işlem hizmetinizi MongoDB için Azure Cosmos DB'ye bağlamak için hangi istemci türlerinin ve kimlik doğrulama yöntemlerinin desteklendiği gösterilmektedir. "Evet", birleşimin desteklendiğini, "Hayır" ise bunun desteklenmediğini gösterir.

İstemci türü Sistem tarafından atanan yönetilen kimlik Kullanıcı atamalı yönetilen kimlik Secret / connection string Service principal
.NET Yes Yes Yes Yes
Java Yes Yes Yes Yes
Java - Spring Boot Hayır Hayır Yes Hayır
Node.js Yes Yes Yes Yes
Python Yes Yes Yes Yes
Go Yes Yes Yes Yes
Hiçbiri Yes Yes Yes Yes

Bu tablo, java - Spring Boot istemci türü dışında, tablodaki tüm istemci türlerinin ve kimlik doğrulama yöntemlerinin desteklendiğini gösterir. Bu, yalnızca Gizli / bağlantı dizesi yöntemini destekler. Diğer tüm istemci türleri, Hizmet Bağlayıcısı'nı kullanarak MongoDB için Azure Cosmos DB'ye bağlanmak için herhangi bir kimlik doğrulama yöntemini kullanabilir.

Uyarı

Cosmos DB, yönetilen kimlik aracılığıyla kimlik doğrulamayı yerel olarak desteklemez. Bu nedenle, Hizmet Bağlayıcısı bağlantı dizesini almak için yönetilen kimliği kullanır ve bağlantı daha sonra bu bağlantı dizesi kullanılarak oluşturulur.

Varsayılan ortam değişkeni adları veya uygulama özellikleri ve örnek kod

İşlem hizmetlerini Azure Cosmos DB'ye bağlamak için aşağıdaki bağlantı ayrıntılarını kullanın. Bu sayfada ayrıca hizmet bağlantısını oluştururken elde ettiğiniz varsayılan ortam değişkeni adları ve değerleri (veya Spring Boot yapılandırması) ve örnek kod gösterilir. Aşağıdaki her örnek için , , <mongo-db-admin-user>, <password>, <Azure-Cosmos-DB-API-for-MongoDB-account>, <subscription-ID>, <resource-group-name>ve <client-secret> yer tutucu metinlerini <tenant-id>kendi bilgilerinizle değiştirin. Adlandırma kuralları hakkında daha fazla bilgi için Hizmet Bağlayıcısı iç bilgileri makalesine bakın.

Sistem tarafından atanan yönetilen kimlik

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_COSMOS_LISTCONNECTIONSTRINGURL The URL to get the connection string 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 Your managed identity scope https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT Kaynak uç noktanız https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Örnek kod

Sistem tarafından atanan yönetilen kimliği kullanarak MongoDB için Azure Cosmos DB'ye bağlanmak için aşağıdaki adımlara ve koda bakın.

Cosmos DB, yönetilen kimlik aracılığıyla kimlik doğrulamasını yerel olarak desteklemediğinden, aşağıdaki kod örneğinde bağlantı dizesini almak için yönetilen kimliği kullanırız ve bu bağlantı dizesi kullanılarak bağlantı kurulur.

  1. Bağımlılıkları yükleme

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Azure.Identity istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alın. Erişim belirtecini ve AZURE_COSMOS_LISTCONNECTIONSTRINGURL kullanarak bağlantı dizesini alın. Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın ve MongoDB için Azure Cosmos DB'ye bağlanın. When using the code below, uncomment the part of the code snippet for the authentication type you want to use.

    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;
    
    // you can retrieve the endpoint of the resource with the following env variable:
    // 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(new Uri(listConnectionStringUrl), null);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Kullanıcı atamalı yönetilen kimlik

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_COSMOS_LISTCONNECTIONSTRINGURL The URL to get the connection string 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 Your managed identity scope https://management.azure.com/.default
AZURE_COSMOS_CLIENTID İstemci kimliğiniz <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Kaynak uç noktanız https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Örnek kod

Kullanıcı tarafından atanan yönetilen kimliği kullanarak MongoDB için Azure Cosmos DB'ye bağlanmak için aşağıdaki adımlara ve koda bakın.

Cosmos DB, yönetilen kimlik aracılığıyla kimlik doğrulamasını yerel olarak desteklemediğinden, aşağıdaki kod örneğinde bağlantı dizesini almak için yönetilen kimliği kullanırız ve bu bağlantı dizesi kullanılarak bağlantı kurulur.

  1. Bağımlılıkları yükleme

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Azure.Identity istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alın. Erişim belirtecini ve AZURE_COSMOS_LISTCONNECTIONSTRINGURL kullanarak bağlantı dizesini alın. Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın ve MongoDB için Azure Cosmos DB'ye bağlanın. When using the code below, uncomment the part of the code snippet for the authentication type you want to use.

    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;
    
    // you can retrieve the endpoint of the resource with the following env variable:
    // 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(new Uri(listConnectionStringUrl), null);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Bağlantı dizesi

Uyarı

Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Bu yordamda açıklanan kimlik doğrulama akışı, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi diğer daha güvenli akışlar uygun olmadığında kullanmalısınız.

Spring Boot istemci türü

Varsayılan ortam değişkeni adı Açıklama Örnek değer
spring.data.mongodb.database Veritabanınız <database-name>
spring.data.mongodb.uri Veritabanı URI'niz 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>@

Diğer istemci türleri

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_COSMOS_CONNECTIONSTRING MongoDB API bağlantı dizesi 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>@

Örnek kod

MongoDB için Azure Cosmos DB'ye bağlantı dizesi kullanarak bağlanmak için aşağıdaki adımlara ve koda bakın.

  1. Install dependency.

    dotnet add package MongoDb.Driver
    
  2. Hizmet Bağlayıcısı tarafından eklenen ortam değişkeninden bağlantı dizesi alın ve MongoDB için Azure Cosmos DB'ye bağlanın.

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

Service principal

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_COSMOS_LISTCONNECTIONSTRINGURL The URL to get the connection string 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 Your managed identity scope https://management.azure.com/.default
AZURE_COSMOS_CLIENTID İstemci kimliğiniz <client-ID>
AZURE_COSMOS_CLIENTSECRET Your client secret <client-secret>
AZURE_COSMOS_TENANTID Kiracı kimliğiniz <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Kaynak uç noktanız https://<Azure-Cosmos-DB-API-for-MongoDB-account>.documents.azure.com:443/

Örnek kod

Hizmet sorumlusu kullanarak MongoDB için Azure Cosmos DB'ye bağlanmak için aşağıdaki adımlara ve koda bakın.

  1. Bağımlılıkları yükleme

    dotnet add package MongoDb.Driver
    dotnet add package Azure.Identity
    
  2. Azure.Identity istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alın. Erişim belirtecini ve AZURE_COSMOS_LISTCONNECTIONSTRINGURL kullanarak bağlantı dizesini alın. Hizmet Bağlayıcısı tarafından eklenen ortam değişkenlerinden bağlantı bilgilerini alın ve MongoDB için Azure Cosmos DB'ye bağlanın. When using the code below, uncomment the part of the code snippet for the authentication type you want to use.

    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;
    
    // you can retrieve the endpoint of the resource with the following env variable:
    // 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(new Uri(listConnectionStringUrl), null);
    var responseBody = await response.Content.ReadAsStringAsync();
    var connectionStrings = JsonSerializer.Deserialize<Dictionary<string, List<Dictionary<string, string>>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"][0]["connectionString"];
    
    // Connect to Azure Cosmos DB for MongoDB
    var client = new MongoClient(connectionString);
    

Sonraki adımlar

Service Connector hakkında daha fazla bilgi edinmek için aşağıda listelenen öğreticileri izleyin.