الرموز المميزة للموارد في Azure Cosmos DB
ينطبق على: NoSQL
MongoDB
كاساندرا
العفريت
جدول
الرموز المميزة للموارد هي بيانات اعتماد يمكن أن توفر وصولا محددا إلى الحاويات أو مفاتيح الأقسام أو العناصر. يمكن ضبطها لمنح أذونات محددة على أساس كل مستخدم والعمل مباشرة مع واجهة برمجة تطبيقات REST ل Azure Cosmos DB. توفر الرموز المميزة للموارد بديلا للمصادقة باستخدام المفاتيح الأساسية أو الثانوية التي تم تكوينها للوصول للقراءة/الكتابة أو للقراءة فقط.
هام
توصي Microsoft باستخدام تدفق المصادقة الأكثر أمانا المتوفر. يتطلب تدفق المصادقة الموضح في هذا الإجراء درجة عالية جدا من الثقة في التطبيق، ويحمل مخاطر غير موجودة في تدفقات أخرى. يجب عليك استخدام هذا التدفق فقط عندما لا تكون التدفقات الأخرى الأكثر أمانا، مثل الهويات المدارة، قابلة للتطبيق.
بالنسبة إلى Azure Cosmos DB، فإن مصادقة Microsoft Entra هي آلية المصادقة الأكثر أمانا المتوفرة. راجع دليل الأمان المناسب لواجهة برمجة التطبيقات الخاصة بك:
تتعامل مكتبات عميل Azure Cosmos DB الأصلية مع إنشاء الرمز المميز للمورد وإدارته مباشرة. ومع ذلك، إذا كنت تستخدم REST، يجب إنشاء عناوين الطلب/المصادقة بنفسك. لمزيد من المعلومات حول إنشاء عناوين المصادقة ل REST، راجع التحكم في الوصول على موارد Azure Cosmos DB في REST.
المتطلبات الأساسية
- حساب Azure Cosmos DB موجود
- .NET 8 SDK (أو أحدث)
إنشاء مستخدم وإذن
أولا، يجب إنشاء مستخدم باستخدام Azure Cosmos DB ل NoSQL SDK. بعد ذلك، يمكنك إنشاء إذن للمستخدم.
إشعار
لا تعرض العديد من واجهات برمجة التطبيقات، مثل Cassandra وGremlin، واجهة من خلال SDKs الأصلية لإنشاء رموز مميزة للموارد. لاستخدام الرموز المميزة للمورد، يجب استخدام NoSQL SDKs للواجهة مع نقطة نهاية حسابك بغض النظر عن واجهة برمجة التطبيقات التي حددتها.
احصل على نقطة نهاية NoSQL وأحد مفاتيح القراءة والكتابة للحساب من حسابك الحالي.
أضف إصدار 3.x من الحزمة
Microsoft.Azure.Cosmos
إلى مشروع .NET الخاص بك.dotnet add package Microsoft.Azure.Cosmos --version 3.*
إضافة كتلة استخدام لمساحة
Microsoft.Azure.Cosmos
الاسم.using Microsoft.Azure.Cosmos;
أنشئ عميلا جديدا يحدد نقطة نهاية NoSQL لحسابك ومفتاح قراءة وكتابة.
CosmosClient client = new( accountEndpoint: "<account-nosql-endpoint>", authKeyOrResourceToken: "<account-read-write-key>" );
إشعار
يجب استخدام نقطة نهاية NoSQL لحسابك الذي يكون عادة بهذا التنسيق:
https://<account-name>.documents.azure.com:443/
.احصل على قاعدة البيانات وعناصر الحاوية.
Database database = client.GetDatabase("<database-name>"); Container container = database.GetContainer("<container-name>");
إنشاء مستخدم جديد داخل قاعدة البيانات لتحديد اسم المستخدم.
User user = await database.CreateUserAsync("demo-user");
أنشئ إذنا جديدا للمستخدم يحدد وضع الإذن (
Read
أوAll
)، ومعرفا فريدا، وحاوية محددة النطاق، ونطاق مفتاح قسم اختياري.PermissionProperties permissionProperties = new( id: "read-permission", permissionMode: PermissionMode.All, container: container, resourcePartitionKey: new PartitionKey("partition-key-value") ); Permission permission = await user.CreatePermissionAsync(permissionProperties);
الحصول على رمز مميز للمورد
الآن، استخدم NoSQL SDK مرة أخرى للحصول على رمز مميز للمورد من الحساب.
PermissionResponse response = await permission.ReadAsync();
string resourceToken = response.Resource.Token;
استخدام الرمز المميز للمورد
وأخيرا، يمكنك استخدام SDK الأصلي لواجهة برمجة التطبيقات الخاصة بك لاستخدام رمز المورد المميز.
using Microsoft.Azure.Cosmos;
CosmosClient client = new(
accountEndpoint: "<account-nosql-endpoint>",
authKeyOrResourceToken: "<resource-token>"
);
Container container = client.GetContainer("<database-name>", "<container-name>");
var iterator = container.GetItemQueryIterator<dynamic>("SELECT * FROM c");
while (iterator.HasMoreResults)
{
foreach (var item in await iterator.ReadNextAsync())
{
Console.WriteLine(item);
}
}