Dela via


Integrera Azure Cosmos DB for Table med Service Connector

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 for Table till andra molntjänster med hjälp av Service Connector. Du kanske fortfarande kan ansluta till Azure Cosmos DB for Table på andra programmeringsspråk utan att använda Service Connector. På den här sidan visas även standardnamn och värden för miljövariabler som du får när du skapar tjänstanslutningen.

Beräkningstjänster som stöds

Service Connector kan användas för att ansluta följande beräkningstjänster till Azure Cosmos DB for Table:

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • 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 for Table med hjälp av Service Connector. 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
Node.js Ja Ja Ja Ja
Python Ja Ja Ja Ja
Go 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. Alla klienttyper kan använda någon av autentiseringsmetoderna för att ansluta till Azure Cosmos DB for Table med hjälp av Service Connector.

Standardnamn för miljövariabler eller programegenskaper och exempelkod

Använd anslutningsinformationen nedan för att ansluta dina beräkningstjänster till Azure Cosmos DB för Table. För varje exempel nedan ersätter du platshållartexterna <account-name>, , <account-key><table-name>, <resource-group-name>, <subscription-ID>, <client-ID>, med <client-secret><tenant-id> din egen information. Mer information om namngivningskonventioner finns i artikeln interna serviceanslutningsprogram .

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/<table-name>/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://<table-name>.documents.azure.com:443/

Exempelkod

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

  1. Installera beroenden.
    dotnet add package Azure.Data.Tables
    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 Connector och anslut till Azure Cosmos DB for Table. 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.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(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/<table-name>/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 klienthemlighets-ID <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<table-name>.documents.azure.com:443/

Exempelkod

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

  1. Installera beroenden.
    dotnet add package Azure.Data.Tables
    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 Connector och anslut till Azure Cosmos DB for Table. 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.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

Connection string

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_COSMOS_CONNECTIONSTRING Azure Cosmos DB för Table anslutningssträng DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

Varning

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren kräver mycket stort förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när andra säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Exempelkod

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

  1. Installera beroende.

    dotnet add package Azure.Data.Tables
    
  2. Hämta anslutningssträng från miljövariabeln som lagts till av Service Connector.

    using Azure.Data.Tables;
    using System; 
    
    TableServiceClient tableServiceClient = new TableServiceClient(Environment.GetEnvironmentVariable("AZURE_COSMOS_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/<table-name>/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 klienthemlighets-ID <client-ID>
AZURE_COSMOS_CLIENTSECRET Din klienthemlighet <client-secret>
AZURE_COSMOS_TENANTID Ditt klientorganisations-ID <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT Resursslutpunkten https://<table-name>.documents.azure.com:443/

Exempelkod

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

  1. Installera beroenden.
    dotnet add package Azure.Data.Tables
    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 Connector och anslut till Azure Cosmos DB for Table. 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.Threading.Tasks;
    using Azure.Data.Tables;
    using Azure.Identity;
    
    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 = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>(responseBody);
    var connectionString = connectionStrings["connectionStrings"].Find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
    
    // Connect to Azure Cosmos DB for Table
    TableServiceClient tableServiceClient = new TableServiceClient(connectionString);
    

Nästa steg

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