Integrace služby Azure Cosmos DB for Cassandra se službou Připojení or

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 for Apache Cassandra k dalším cloudovým službám pomocí služby Připojení or. Stále se můžete připojit ke službě Azure Cosmos DB for Cassandra v jiných programovacích jazycích bez použití služby Připojení or. 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

Služba Připojení or se dá použít k připojení následujících výpočetních služeb ke službě Azure Cosmos DB for Apache Cassandra:

  • Azure App Service
  • Azure Functions
  • Azure Container Apps
  • 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 Apache Cassandra pomocí služby Připojení or. "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
Přejít 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
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 Apache Cassandra pomocí služby Připojení or 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

Odkazujte na podrobnosti o připojení a vzorový kód v následujících tabulkách podle typu ověřování a typu klienta vašeho připojení a připojte výpočetní služby ke službě Azure Cosmos DB for Apache Cassandra. Další informace o konvencích vytváření názvů najdete v článku o interních informacích o službě Připojení.

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

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTKEYURL 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-account>/listKeys?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-account>.documents.azure.com:443/
AZURE_COSMOS_CONTACTPOINT Kontaktní bod služby Azure Cosmos DB pro Apache Cassandra <Azure-Cosmos-DB-account>.cassandra.cosmos.azure.com
AZURE_COSMOS_PORT Port připojení Cassandra 10350
AZURE_COSMOS_KEYSPACE Prostor klíčů Cassandra <keyspace>
AZURE_COSMOS_USERNAME Uživatelské jméno Cassandra <username>

Ukázkový kód

Pokud se chcete připojit ke službě Azure Cosmos DB for Cassandra 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 CassandraCSharpDriver --version 3.19.3
    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_LISTKEYURL získejte heslo. Získejte informace o připojení z proměnných prostředí přidaných službou Service Připojení or a připojte se ke službě Azure Cosmos DB for Cassandra. 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 Cassandra;
    using Azure.Identity;
    
    public class Program
    {
    	public static async Task Main()
    	{
            var cassandraContactPoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONTACTPOINT");
            var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
            var cassandraPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
            var cassandraKeyspace = Environment.GetEnvironmentVariable("AZURE_COSMOS_KEYSPACE");
            var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
            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 password.
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
            var response = await httpClient.POSTAsync(listKeyUrl);
            var responseBody = await response.Content.ReadAsStringAsync();
            var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
            var password = keys["primaryMasterKey"];
    
            // Connect to Azure Cosmos DB for Cassandra
            var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
            options.SetHostNameResolver((ipAddress) => cassandraContactPoint);
            Cluster cluster = Cluster
                .Builder()
                .WithCredentials(userName, password)
                .WithPort(cassandraPort)
                .AddContactPoint(cassandraContactPoint).WithSSL(options).Build();
            ISession session = await cluster.ConnectAsync();
        }
    
        public static bool ValidateServerCertificate
    	(
            object sender,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors
        )
        {
            if (sslPolicyErrors == SslPolicyErrors.None)
                return true;
    
            Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
            // Do not allow this client to communicate with unauthenticated servers.
            return false;
        }
    }
    
    

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

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTKEYURL 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-account>/listKeys?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-account>.documents.azure.com:443/
AZURE_COSMOS_CONTACTPOINT Kontaktní bod služby Azure Cosmos DB pro Apache Cassandra <Azure-Cosmos-DB-account>.cassandra.cosmos.azure.com
AZURE_COSMOS_PORT Port připojení Cassandra 10350
AZURE_COSMOS_KEYSPACE Prostor klíčů Cassandra <keyspace>
AZURE_COSMOS_USERNAME Uživatelské jméno Cassandra <username>
AZURE_COSMOS_CLIENTID ID klienta <client-ID>

Ukázkový kód

Projděte si následující kroky a kód a připojte se ke službě Azure Cosmos DB for Cassandra pomocí spravované identity přiřazené uživatelem.

  1. Instalace závislostí

    dotnet add package CassandraCSharpDriver --version 3.19.3
    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_LISTKEYURL získejte heslo. Získejte informace o připojení z proměnných prostředí přidaných službou Service Připojení or a připojte se ke službě Azure Cosmos DB for Cassandra. 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 Cassandra;
    using Azure.Identity;
    
    public class Program
    {
    	public static async Task Main()
    	{
            var cassandraContactPoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONTACTPOINT");
            var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
            var cassandraPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
            var cassandraKeyspace = Environment.GetEnvironmentVariable("AZURE_COSMOS_KEYSPACE");
            var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
            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 password.
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
            var response = await httpClient.POSTAsync(listKeyUrl);
            var responseBody = await response.Content.ReadAsStringAsync();
            var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
            var password = keys["primaryMasterKey"];
    
            // Connect to Azure Cosmos DB for Cassandra
            var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
            options.SetHostNameResolver((ipAddress) => cassandraContactPoint);
            Cluster cluster = Cluster
                .Builder()
                .WithCredentials(userName, password)
                .WithPort(cassandraPort)
                .AddContactPoint(cassandraContactPoint).WithSSL(options).Build();
            ISession session = await cluster.ConnectAsync();
        }
    
        public static bool ValidateServerCertificate
    	(
            object sender,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors
        )
        {
            if (sslPolicyErrors == SslPolicyErrors.None)
                return true;
    
            Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
            // Do not allow this client to communicate with unauthenticated servers.
            return false;
        }
    }
    
    

Připojovací řetězec

Typ klienta SpringBoot

Výchozí název proměnné prostředí Popis Příklad hodnoty
spring.data.cassandra.contact-points Kontaktní bod služby Azure Cosmos DB pro Apache Cassandra <Azure-Cosmos-DB-account>.cassandra.cosmos.azure.com
spring.data.cassandra.port Port připojení Cassandra 10350
spring.data.cassandra.keyspace-name Prostor klíčů Cassandra <keyspace>
spring.data.cassandra.username Uživatelské jméno Cassandra <username>
spring.data.cassandra.password Heslo Cassandra <password>
spring.data.cassandra.local-datacenter Oblast Azure <Azure-region>
spring.data.cassandra.ssl Stav SSL true

Další typy klientů

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_CONTACTPOINT Kontaktní bod služby Azure Cosmos DB pro Apache Cassandra <Azure-Cosmos-DB-account>.cassandra.cosmos.azure.com
AZURE_COSMOS_PORT Port připojení Cassandra 10350
AZURE_COSMOS_KEYSPACE Prostor klíčů Cassandra <keyspace>
AZURE_COSMOS_USERNAME Uživatelské jméno Cassandra <username>
AZURE_COSMOS_PASSWORD Heslo Cassandra <password>

Ukázkový kód

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

  1. Instalace závislostí

    dotnet add package CassandraCSharpDriver --version 3.19.3
    
  2. Získejte informace o připojení z proměnných prostředí přidaných službou Service Připojení or a připojte se ke službě Azure Cosmos DB for Cassandra.

    using System;
    using System.Security.Authentication;
    using System.Net.Security;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
    using Cassandra;
    
    public class Program
    {
    	public static async Task Main()
    	{
            var cassandraContactPoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONTACTPOINT");
            var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
            var password = Environment.GetEnvironmentVariable("AZURE_COSMOS_PASSWORD");
            var cassandraPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
            var cassandraKeyspace = Environment.GetEnvironmentVariable("AZURE_COSMOS_KEYSPACE");
    
            var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
            options.SetHostNameResolver((ipAddress) => cassandraContactPoint);
            Cluster cluster = Cluster
                .Builder()
                .WithCredentials(userName, password)
                .WithPort(cassandraPort)
                .AddContactPoint(cassandraContactPoint).WithSSL(options).Build();
            ISession session = await cluster.ConnectAsync();
        }
    
        public static bool ValidateServerCertificate
    	(
            object sender,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors
        )
        {
            if (sslPolicyErrors == SslPolicyErrors.None)
                return true;
    
            Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
            // Do not allow this client to communicate with unauthenticated servers.
            return false;
        }
    }
    
    

Další informace najdete v tématu Vytvoření aplikace Apache Cassandra pomocí sady .NET SDK a Azure Cosmos DB.

Instanční objekt

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_COSMOS_LISTKEYURL 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-account>/listKeys?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-account>.documents.azure.com:443/
AZURE_COSMOS_CONTACTPOINT Kontaktní bod služby Azure Cosmos DB pro Apache Cassandra <Azure-Cosmos-DB-account>.cassandra.cosmos.azure.com
AZURE_COSMOS_PORT Port připojení Cassandra 10350
AZURE_COSMOS_KEYSPACE Prostor klíčů Cassandra <keyspace>
AZURE_COSMOS_USERNAME Uživatelské jméno Cassandra <username>
AZURE_COSMOS_CLIENTID ID klienta <client-ID>
AZURE_COSMOS_CLIENTSECRET Tajný klíč klienta <client-secret>
AZURE_COSMOS_TENANTID ID vašeho tenanta <tenant-ID>

Ukázkový kód

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

  1. Instalace závislostí

    dotnet add package CassandraCSharpDriver --version 3.19.3
    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_LISTKEYURL získejte heslo. Získejte informace o připojení z proměnných prostředí přidaných službou Service Připojení or a připojte se ke službě Azure Cosmos DB for Cassandra. 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 Cassandra;
    using Azure.Identity;
    
    public class Program
    {
    	public static async Task Main()
    	{
            var cassandraContactPoint = Environment.GetEnvironmentVariable("AZURE_COSMOS_CONTACTPOINT");
            var userName = Environment.GetEnvironmentVariable("AZURE_COSMOS_USERNAME");
            var cassandraPort = Int32.Parse(Environment.GetEnvironmentVariable("AZURE_COSMOS_PORT"));
            var cassandraKeyspace = Environment.GetEnvironmentVariable("AZURE_COSMOS_KEYSPACE");
            var listKeyUrl = Environment.GetEnvironmentVariable("AZURE_COSMOS_LISTKEYURL");
            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 password.
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken.Token}");
            var response = await httpClient.POSTAsync(listKeyUrl);
            var responseBody = await response.Content.ReadAsStringAsync();
            var keys = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody);
            var password = keys["primaryMasterKey"];
    
            // Connect to Azure Cosmos DB for Cassandra
            var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
            options.SetHostNameResolver((ipAddress) => cassandraContactPoint);
            Cluster cluster = Cluster
                .Builder()
                .WithCredentials(userName, password)
                .WithPort(cassandraPort)
                .AddContactPoint(cassandraContactPoint).WithSSL(options).Build();
            ISession session = await cluster.ConnectAsync();
        }
    
        public static bool ValidateServerCertificate
    	(
            object sender,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors
        )
        {
            if (sslPolicyErrors == SslPolicyErrors.None)
                return true;
    
            Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
            // Do not allow this client to communicate with unauthenticated servers.
            return false;
        }
    }
    
    

Další kroky

Další informace o službě service Připojení or najdete v následujících kurzech.