دمج Azure Cosmos DB للجدول مع Service Connector

تعرض هذه الصفحة أساليب المصادقة المدعومة والعملاء، وتعرض نموذج التعليمات البرمجية التي يمكنك استخدامها لتوصيل Azure Cosmos DB for Table بخدمات سحابية أخرى باستخدام Service Connector. قد تظل قادرا على الاتصال ب Azure Cosmos DB للجدول بلغات البرمجة الأخرى دون استخدام موصل الخدمة. تعرض هذه الصفحة أيضا أسماء متغيرات البيئة الافتراضية والقيم التي تحصل عليها عند إنشاء اتصال الخدمة.

خدمات الحوسبة المدعومة

يمكن استخدام موصل الخدمة لتوصيل خدمات الحوسبة التالية ب Azure Cosmos DB للجدول:

  • "Azure App Service"
  • Azure Container Apps
  • دالات Azure
  • خدمة Azure Kubernetes ‏(AKS)
  • Azure Spring Apps

أنواع المصادقة المدعومة وأنواع العملاء

يوضح الجدول أدناه مجموعات أنواع العملاء وأساليب المصادقة المدعومة لتوصيل خدمة الحوسبة الخاصة بك ب Azure Cosmos DB للجدول باستخدام موصل الخدمة. يشير "نعم" إلى أن المجموعة مدعومة، بينما تشير "لا" إلى أنها غير مدعومة.

نوع العميل الهوية المُدارة التي يُعيّنها النظام الهوية المُدارة التي يعيّنها المُستخدم بيانات سرية / سلسلة الاتصال كيان الخدمة
.NET ‏‏نعم‬ نعم نعم ‏‏نعم‬
Java ‏‏نعم‬ نعم نعم ‏‏نعم‬
Node.js ‏‏نعم‬ نعم نعم ‏‏نعم‬
Python ‏‏نعم‬ نعم نعم ‏‏نعم‬
انتقال ‏‏نعم‬ نعم نعم ‏‏نعم‬
بلا ‏‏نعم‬ نعم نعم ‏‏نعم‬

يشير هذا الجدول إلى أن جميع مجموعات أنواع العملاء وأساليب المصادقة في الجدول مدعومة. يمكن لجميع أنواع العملاء استخدام أي من أساليب المصادقة للاتصال ب Azure Cosmos DB للجدول باستخدام موصل الخدمة.

أسماء متغيرات البيئة الافتراضية أو خصائص التطبيق ونموذج التعليمات البرمجية

استخدم تفاصيل الاتصال أدناه لتوصيل خدمات الحوسبة الخاصة بك ب Azure Cosmos DB for Table. لكل مثال أدناه، استبدل النصوص <account-name>النائبة ، <table-name><resource-group-name><account-key>، <subscription-ID>، <client-ID>، <client-secret>، <tenant-id> بمعلوماتك الخاصة. لمزيد من المعلومات حول اصطلاحات التسمية، راجع مقالة Service Connector internals .

الهوية المُدارة التي يُعيّنها النظام

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
AZURE_COSMOS_LISTCONNECTIONSTRINGURL عنوان URL للحصول على سلسلة الاتصال 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 نطاق الهوية المدارة لديك https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT نقطة نهاية المورد لديك https://<table-name>.documents.azure.com:443/

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال ب Azure Cosmos DB for Table باستخدام هوية مدارة معينة من قبل النظام.

  1. تثبيت التبعيات:
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل Azure.Identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
    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);
    

الهوية المُدارة التي يعيّنها المُستخدم

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
AZURE_COSMOS_LISTCONNECTIONSTRINGURL عنوان URL للحصول على سلسلة الاتصال 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 نطاق الهوية المدارة لديك https://management.azure.com/.default
AZURE_COSMOS_CLIENTID معرف سر العميل لديك <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT نقطة نهاية المورد لديك https://<table-name>.documents.azure.com:443/

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال ب Azure Cosmos DB for Table باستخدام هوية مدارة يعينها المستخدم.

  1. تثبيت التبعيات:
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل Azure.Identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
    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);
    

سلسلة الاتصال

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
AZURE_COSMOS_CONNECTIONSTRING Azure Cosmos DB for Table سلسلة الاتصال DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;TableEndpoint=https://<table-name>.table.cosmos.azure.com:443/;

تحذير

توصي Microsoft باستخدام تدفق المصادقة الأكثر أمانا المتوفر. يتطلب تدفق المصادقة الموضح في هذا الإجراء درجة عالية جدا من الثقة في التطبيق، ويحمل مخاطر غير موجودة في تدفقات أخرى. يجب عليك استخدام هذا التدفق فقط عندما لا تكون التدفقات الأخرى الأكثر أمانا، مثل الهويات المدارة، قابلة للتطبيق.

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال ب Azure Cosmos DB for Table باستخدام سلسلة الاتصال.

  1. تثبيت التبعية.

    dotnet add package Azure.Data.Tables
    
  2. احصل على سلسلة الاتصال من متغير البيئة الذي تمت إضافته بواسطة Service Connector.

    using Azure.Data.Tables;
    using System; 
    
    TableServiceClient tableServiceClient = new TableServiceClient(Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING"));
    

كيان الخدمة

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
AZURE_COSMOS_LISTCONNECTIONSTRINGURL عنوان URL للحصول على سلسلة الاتصال 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 نطاق الهوية المدارة لديك https://management.azure.com/.default
AZURE_COSMOS_CLIENTID معرف سر العميل لديك <client-ID>
AZURE_COSMOS_CLIENTSECRET سر العميل الخاص بك <client-secret>
AZURE_COSMOS_TENANTID معرف المستأجر <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT نقطة نهاية المورد لديك https://<table-name>.documents.azure.com:443/

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال ب Azure Cosmos DB for Table باستخدام كيان الخدمة.

  1. تثبيت التبعيات:
    dotnet add package Azure.Data.Tables
    dotnet add package Azure.Identity
    
  2. احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل Azure.Identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
    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);
    

الخطوات التالية

اتبع البرامج التعليمية المذكورة أدناه لمعرفة المزيد عن Service Connector.