تعرض هذه الصفحة أساليب المصادقة المدعومة والعملاء، وتعرض نموذج التعليمات البرمجية التي يمكنك استخدامها لتوصيل 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.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-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import com.azure.data.tables.TableClient;
import com.azure.data.tables.TableClientBuilder;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
String endpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listConnectionStringUrl = System.getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("<AZURE_COSMOS_CLIENTID>"))
// .clientSecret(System.getenv("<AZURE_COSMOS_CLIENTSECRET>"))
// .tenantId(System.getenv("<AZURE_COSMOS_TENANTID>"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the connection string.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listConnectionStringUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
List<Map<String, String>> connectionStrings = responseBody.get("connectionStrings");
String connectionString;
for (Map<String, String> connStr : connectionStrings){
if (connStr.get("description") == "Primary Table Connection String"){
connectionString = connStr.get("connectionString");
break;
}
}
// Connect to Azure Cosmos DB for Table
TableClient tableClient = new TableClientBuilder()
.connectionString(connectionString)
.buildClient();
احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام azure-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import os
from azure.data.tables import TableServiceClient
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
listConnectionStringUrl = os.getenv('AZURE_COSMOS_LISTCONNECTIONSTRINGURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the connection string
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listConnectionStringUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
conn_str = x["connectionString"] for x in keys_dict["connectionStrings"] if x["description"] == "Primary Table Connection String"
# Connect to Azure Cosmos DB for Table
table_service = TableServiceClient.from_connection_string(conn_str)
تثبيت التبعيات:
go get github.com/Azure/azure-sdk-for-go/sdk/data/aztables
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azidentity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"fmt"
"os"
"context"
"log"
"io/ioutil"
"encoding/json"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
endpoint = os.Getenv("AZURE_COSMOS_RESOURCEENDPOINT")
listConnectionStringUrl = os.Getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL")
scope = os.Getenv("AZUE_COSMOS_SCOPE")
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// tenantid := os.Getenv("AZURE_COSMOS_TENANTID")
// clientsecret := os.Getenv("AZURE_COSMOS_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
// Acquire the access token.
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string{scope},
})
// Acquire the connection string.
client := &http.Client{}
req, err := http.NewRequest("POST", listConnectionStringUrl, nil)
req.Header.Add("Authorization", "Bearer " + token.Token)
resp, err := client.Do(req)
body, err := ioutil.ReadAll(resp.Body)
var result map[string]interface{}
json.Unmarshal(body, &result)
connStr := ""
for i := range result["connectionStrings"]{
if result["connectionStrings"][i]["description"] == "Primary Table Connection String" {
connStr, err := result["connectionStrings"][i]["connectionString"]
break
}
}
serviceClient, err := aztables.NewServiceClientFromConnectionString(connStr, nil)
if err != nil {
panic(err)
}
}
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azure/identity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const { TableClient } = require("@azure/data-tables");
const axios = require('axios');
let endpoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let listConnectionStringUrl = process.env.AZURE_COSMOS_LISTCONNECTIONSTRINGURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the connection string.
const config = {
method: 'post',
url: listConnectionStringUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const connectionString = keysDict["connectionStrings"].find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
// Connect to Azure Cosmos DB for Table
const serviceClient = TableClient.fromConnectionString(connectionString);
بالنسبة للغات الأخرى، يمكنك استخدام عنوان URL لنقطة النهاية والخصائص الأخرى التي يعينها Service Connector إلى متغيرات البيئة للاتصال ب Azure Cosmos DB for Table. للحصول على تفاصيل متغير البيئة، راجع دمج Azure Cosmos DB للجدول مع موصل الخدمة.
احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل 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-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import com.azure.data.tables.TableClient;
import com.azure.data.tables.TableClientBuilder;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
String endpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listConnectionStringUrl = System.getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("<AZURE_COSMOS_CLIENTID>"))
// .clientSecret(System.getenv("<AZURE_COSMOS_CLIENTSECRET>"))
// .tenantId(System.getenv("<AZURE_COSMOS_TENANTID>"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the connection string.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listConnectionStringUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
List<Map<String, String>> connectionStrings = responseBody.get("connectionStrings");
String connectionString;
for (Map<String, String> connStr : connectionStrings){
if (connStr.get("description") == "Primary Table Connection String"){
connectionString = connStr.get("connectionString");
break;
}
}
// Connect to Azure Cosmos DB for Table
TableClient tableClient = new TableClientBuilder()
.connectionString(connectionString)
.buildClient();
احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام azure-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import os
from azure.data.tables import TableServiceClient
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
listConnectionStringUrl = os.getenv('AZURE_COSMOS_LISTCONNECTIONSTRINGURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the connection string
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listConnectionStringUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
conn_str = x["connectionString"] for x in keys_dict["connectionStrings"] if x["description"] == "Primary Table Connection String"
# Connect to Azure Cosmos DB for Table
table_service = TableServiceClient.from_connection_string(conn_str)
تثبيت التبعيات:
go get github.com/Azure/azure-sdk-for-go/sdk/data/aztables
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azidentity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"fmt"
"os"
"context"
"log"
"io/ioutil"
"encoding/json"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
endpoint = os.Getenv("AZURE_COSMOS_RESOURCEENDPOINT")
listConnectionStringUrl = os.Getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL")
scope = os.Getenv("AZUE_COSMOS_SCOPE")
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// tenantid := os.Getenv("AZURE_COSMOS_TENANTID")
// clientsecret := os.Getenv("AZURE_COSMOS_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
// Acquire the access token.
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string{scope},
})
// Acquire the connection string.
client := &http.Client{}
req, err := http.NewRequest("POST", listConnectionStringUrl, nil)
req.Header.Add("Authorization", "Bearer " + token.Token)
resp, err := client.Do(req)
body, err := ioutil.ReadAll(resp.Body)
var result map[string]interface{}
json.Unmarshal(body, &result)
connStr := ""
for i := range result["connectionStrings"]{
if result["connectionStrings"][i]["description"] == "Primary Table Connection String" {
connStr, err := result["connectionStrings"][i]["connectionString"]
break
}
}
serviceClient, err := aztables.NewServiceClientFromConnectionString(connStr, nil)
if err != nil {
panic(err)
}
}
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azure/identity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const { TableClient } = require("@azure/data-tables");
const axios = require('axios');
let endpoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let listConnectionStringUrl = process.env.AZURE_COSMOS_LISTCONNECTIONSTRINGURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the connection string.
const config = {
method: 'post',
url: listConnectionStringUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const connectionString = keysDict["connectionStrings"].find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
// Connect to Azure Cosmos DB for Table
const serviceClient = TableClient.fromConnectionString(connectionString);
بالنسبة للغات الأخرى، يمكنك استخدام عنوان URL لنقطة النهاية والخصائص الأخرى التي يعينها Service Connector إلى متغيرات البيئة للاتصال ب Azure Cosmos DB for Table. للحصول على تفاصيل متغير البيئة، راجع دمج Azure Cosmos DB للجدول مع موصل الخدمة.
توصي Microsoft باستخدام تدفق المصادقة الأكثر أمانا المتوفر. يتطلب تدفق المصادقة الموضح في هذا الإجراء درجة عالية جدا من الثقة في التطبيق، ويحمل مخاطر غير موجودة في تدفقات أخرى. يجب عليك استخدام هذا التدفق فقط عندما لا تكون التدفقات الأخرى الأكثر أمانا، مثل الهويات المدارة، قابلة للتطبيق.
التعليمة البرمجية العينة
راجع الخطوات والرمز أدناه للاتصال ب Azure Cosmos DB for Table باستخدام سلسلة الاتصال.
احصل على سلسلة الاتصال من متغير البيئة الذي تمت إضافته بواسطة Service Connector.
using Azure.Data.Tables;
using System;
TableServiceClient tableServiceClient = new TableServiceClient(Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING"));
بالنسبة للغات الأخرى، يمكنك استخدام عنوان URL لنقطة النهاية والخصائص الأخرى التي يعينها Service Connector إلى متغيرات البيئة للاتصال ب Azure Cosmos DB for Table. للحصول على تفاصيل متغير البيئة، راجع دمج Azure Cosmos DB للجدول مع موصل الخدمة.
احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل 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-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import com.azure.data.tables.TableClient;
import com.azure.data.tables.TableClientBuilder;
import javax.net.ssl.*;
import java.net.InetSocketAddress;
import com.azure.identity.*;
import com.azure.core.credentital.*;
import java.net.http.*;
String endpoint = System.getenv("AZURE_COSMOS_RESOURCEENDPOINT");
String listConnectionStringUrl = System.getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL");
String scope = System.getenv("AZURE_COSMOS_SCOPE");
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
// For user assigned managed identity.
// DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
// .managedIdentityClientId(System.getenv("AZURE_COSMOS_CLIENTID"))
// .build();
// For service principal.
// ClientSecretCredential defaultCredential = new ClientSecretCredentialBuilder()
// .clientId(System.getenv("<AZURE_COSMOS_CLIENTID>"))
// .clientSecret(System.getenv("<AZURE_COSMOS_CLIENTSECRET>"))
// .tenantId(System.getenv("<AZURE_COSMOS_TENANTID>"))
// .build();
// Get the access token.
AccessToken accessToken = defaultCredential.getToken(new TokenRequestContext().addScopes(new String[]{ scope })).block();
String token = accessToken.getToken();
// Get the connection string.
HttpClient client = HttpClient.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(listConnectionStringUrl))
.header("Authorization", "Bearer " + token)
.POST()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JSONParser parser = new JSONParser();
JSONObject responseBody = parser.parse(response.body());
List<Map<String, String>> connectionStrings = responseBody.get("connectionStrings");
String connectionString;
for (Map<String, String> connStr : connectionStrings){
if (connStr.get("description") == "Primary Table Connection String"){
connectionString = connStr.get("connectionString");
break;
}
}
// Connect to Azure Cosmos DB for Table
TableClient tableClient = new TableClientBuilder()
.connectionString(connectionString)
.buildClient();
احصل على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام azure-identity. استخدم الرمز المميز للوصول و AZURE_COSMOS_LISTCONNECTIONSTRINGURL للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import os
from azure.data.tables import TableServiceClient
import requests
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
endpoint = os.getenv('AZURE_COSMOS_RESOURCEENDPOINT')
listConnectionStringUrl = os.getenv('AZURE_COSMOS_LISTCONNECTIONSTRINGURL')
scope = os.getenv('AZURE_COSMOS_SCOPE')
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity
# cred = ManagedIdentityCredential()
# For user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_COSMOS_TENANTID')
# client_id = os.getenv('AZURE_COSMOS_CLIENTID')
# client_secret = os.getenv('AZURE_COSMOS_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# Get the connection string
session = requests.Session()
token = cred.get_token(scope)
response = session.post(listConnectionStringUrl, headers={"Authorization": "Bearer {}".format(token.token)})
keys_dict = response.json()
conn_str = x["connectionString"] for x in keys_dict["connectionStrings"] if x["description"] == "Primary Table Connection String"
# Connect to Azure Cosmos DB for Table
table_service = TableServiceClient.from_connection_string(conn_str)
تثبيت التبعيات:
go get github.com/Azure/azure-sdk-for-go/sdk/data/aztables
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azidentity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"fmt"
"os"
"context"
"log"
"io/ioutil"
"encoding/json"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
endpoint = os.Getenv("AZURE_COSMOS_RESOURCEENDPOINT")
listConnectionStringUrl = os.Getenv("AZURE_COSMOS_LISTCONNECTIONSTRINGURL")
scope = os.Getenv("AZUE_COSMOS_SCOPE")
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// For user-assigned identity.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// For service principal.
// clientid := os.Getenv("AZURE_COSMOS_CLIENTID")
// tenantid := os.Getenv("AZURE_COSMOS_TENANTID")
// clientsecret := os.Getenv("AZURE_COSMOS_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
// Acquire the access token.
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string{scope},
})
// Acquire the connection string.
client := &http.Client{}
req, err := http.NewRequest("POST", listConnectionStringUrl, nil)
req.Header.Add("Authorization", "Bearer " + token.Token)
resp, err := client.Do(req)
body, err := ioutil.ReadAll(resp.Body)
var result map[string]interface{}
json.Unmarshal(body, &result)
connStr := ""
for i := range result["connectionStrings"]{
if result["connectionStrings"][i]["description"] == "Primary Table Connection String" {
connStr, err := result["connectionStrings"][i]["connectionString"]
break
}
}
serviceClient, err := aztables.NewServiceClientFromConnectionString(connStr, nil)
if err != nil {
panic(err)
}
}
في التعليمات البرمجية، احصل على الرمز المميز للوصول باستخدام @azure/identity، ثم استخدمه للحصول على سلسلة الاتصال. احصل على معلومات الاتصال من متغيرات البيئة المضافة بواسطة Service Connector واتصل ب Azure Cosmos DB for Table. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const { TableClient } = require("@azure/data-tables");
const axios = require('axios');
let endpoint = process.env.AZURE_COSMOS_RESOURCEENDPOINT;
let listConnectionStringUrl = process.env.AZURE_COSMOS_LISTCONNECTIONSTRINGURL;
let scope = process.env.AZURE_COSMOS_SCOPE;
// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// For service principal.
// const tenantId = process.env.AZURE_COSMOS_TENANTID;
// const clientId = process.env.AZURE_COSMOS_CLIENTID;
// const clientSecret = process.env.AZURE_COSMOS_CLIENTSECRET;
// Acquire the access token.
var accessToken = await credential.getToken(scope);
// Get the connection string.
const config = {
method: 'post',
url: listConnectionStringUrl,
headers: {
'Authorization': `Bearer ${accessToken.token}`
}
};
const response = await axios(config);
const keysDict = response.data;
const connectionString = keysDict["connectionStrings"].find(connStr => connStr["description"] == "Primary Table Connection String")["connectionString"];
// Connect to Azure Cosmos DB for Table
const serviceClient = TableClient.fromConnectionString(connectionString);
بالنسبة للغات الأخرى، يمكنك استخدام عنوان URL لنقطة النهاية والخصائص الأخرى التي يعينها Service Connector إلى متغيرات البيئة للاتصال ب Azure Cosmos DB for Table. للحصول على تفاصيل متغير البيئة، راجع دمج Azure Cosmos DB للجدول مع موصل الخدمة.
الخطوات التالية
اتبع البرامج التعليمية المذكورة أدناه لمعرفة المزيد عن Service Connector.