تفويض الوصول إلى بيانات كائن ثنائي كبير الحجم أو قائمة الانتظار من تطبيق أصلي أو تطبيق ويب
تتمثل الميزة الرئيسية لاستخدام Azure Active Directory (Azure AD) مع تخزين الكائنات الثنائية كبيرة الحجم في Azure أو تخزين قائمة الانتظار في أن بيانات الاعتماد الخاصة بك لم تعد بحاجة إلى تخزينها في التعليمات البرمجية الخاصة بك. بدلاً من ذلك، يمكنك طلب رمز وصول مميز OAuth 2.0 من النظام الأساسي لـهوية Microsoft. يصادق دليل Azure النشط على مبدأ الأمان (مستخدم، أو مجموعة، أو مدير خدمة) يقوم بتشغيل التطبيق. إذا نجحت المصادقة، يقوم Azure AD بإرجاع رمز الوصول إلى التطبيق، ويمكن للتطبيق بعد ذلك استخدام رمز الوصول لتفويض الطلبات إلى تخزين الكائنات الثنائية كبيرة الحجم في Azure أو تخزين قائمة الانتظار.
توضح هذه المقالة كيفية تكوين التطبيق الأصلي أو تطبيق الويب للمصادقة مع النظام الأساسي للهوية من Microsoft باستخدام نموذج تطبيق متاح للتنزيل. يتميز نموذج التطبيق بـ .NET، لكن اللغات الأخرى تستخدم أسلوبًا مشابهًا. لمزيد من المعلومات حول النظام الأساسي للهوية من Microsoft، راجع نظرة عامة على النظام الأساسي للهوية من Microsoft.
.للحصول على نظرة عامة حول تدفق منح التعليمات البرمجية OAuth 2.0، راجع تفويض الوصول إلى تطبيقات الويب Microsoft Azure Active Directory باستخدام تدفق منح التعليمات البرمجية OAuth 2.0.
نبذة عن نموذج التطبيق
يوفر التطبيق النموذجي تجربة شاملة توضح كيفية تكوين تطبيق ويب للمصادقة باستخدام Azure AD في بيئة تطوير محلية. لعرض وتشغيل التطبيق النموذجي، قم أولاً بنسخه أو تنزيله من GitHub. ثم اتبع الخطوات الموضحة في المقالة لتكوين تسجيل تطبيق Azure وتحديث التطبيق لبيئتك.
قم بتعيين دور لمبدأ أمان Azure AD
لمصادقة مبدأ أمان من تطبيق تخزين Azure، قم أولاً بتكوين إعدادات التحكم في الوصول المستند إلى الدور (Azure RBAC) لمبدأ الأمان هذا. يعرّف تخزين Azure الأدوار المضمنة التي تشمل أذونات الحاويات وقوائم الانتظار. عند تعيين دور Azure إلى أساس أمان، يتم منح أساس الأمان هذا الوصول إلى هذا المورد. لمزيد من المعلومات، راجع تعيين دور Azure للوصول إلى بيانات كائن ثنائي كبير الحجم.
سجل طلبك لدى مستأجر Microsoft Azure Active Directory
تتمثل الخطوة الأولى في استخدام Azure AD لتخويل الوصول إلى موارد التخزين في تسجيل تطبيق العميل الخاص بك مع مستأجر Azure AD من مدخل Azure. عندما تقوم بتسجيل تطبيق العميل الخاص بك، فإنك تقدم معلومات حول التطبيق إلى Azure AD. يوفر Azure AD بعد ذلك معرف العميل (يسمى أيضًا معرف التطبيق) الذي تستخدمه لربط تطبيقك بـ Azure AD في وقت التشغيل. لمعرفة المزيد حول معرّف العميل، راجع الكائنات الأساسية للتطبيق والخدمة في Microsoft Azure Active Directory. لتسجيل تطبيق تخزين Azure، اتبع الخطوات الموضحة في Quickstart: تسجيل تطبيق باستخدام النظام الأساسي للهوية من Microsoft.
تُظهر الصورة التالية الإعدادات العامة لتسجيل تطبيق ويب. لاحظ أنه في هذا المثال، تم تعيين URI لإعادة التوجيه على http://localhost:5000/signin-oidc لاختبار نموذج التطبيق في بيئة التطوير. يمكنك تعديل هذا الإعداد لاحقًا ضمن إعداد المصادقة لتطبيقك المسجل في مدخل Azure:
ملاحظة
إذا قمت بتسجيل التطبيق الخاص بك كتطبيق أصلي، يمكنك تحديد أي URI صالح لعنوان URI لإعادة التوجيه. بالنسبة للتطبيقات الأصلية، لا يجب أن تكون هذه القيمة عنوان URL حقيقي. بالنسبة لتطبيقات الويب، يجب أن يكون URI لإعادة التوجيه URI صالحًا، لأنه يحدد عنوان URL الذي يتم توفير الرموز المميزة له.
بعد تسجيل طلبك، سترى معرّف التطبيق (أو معرّف العميل) ضمن الإعدادات:
لمزيد من المعلومات حول تسجيل تطبيق باستخدام Microsoft Azure Active Directory، راجع تكامل التطبيقات مع Microsoft Azure Active Directory.
امنح أذونات التطبيق المسجل إلى تخزين Azure
بعد ذلك، امنح أذونات التطبيق الخاص بك لاستدعاء واجهات برمجة التطبيقات لتخزين Azure. تمكّن هذه الخطوة التطبيق الخاص بك من تفويض الطلبات إلى تخزين Azure باستخدام Azure AD.
في صفحة أذونات واجهة برمجة التطبيقات لتطبيقك المسجل، حدد إضافة إذن.
ضمن علامة تبويب واجهة برمجة تطبيقات Microsoft، حدد تخزين Azure.
في جزء أذونات طلب واجهة برمجة التطبيقات، ضمن ما نوع الأذونات التي يتطلبها التطبيق الخاص بك؟، لاحظ أن نوع الإذن المتاح هو أذونات مفوضة. يتم تحديد هذا الخيار لك بشكل افتراضي.
ضمن الأذونات، حدد مربع الاختيار بجوار user_impersonation، ثم حدد زر إضافة أذونات.
بعد ذلك، امنح موافقة المسؤول لهذه الأذونات بالنقر فوق منح موافقة المسؤول للدليل الافتراضي.
يُظهر جزء أذونات واجهة برمجة التطبيقات الآن أن تطبيق Azure AD المسجل لديه حق الوصول إلى كل من Microsoft Graph وتخزين Azure APIs، ويتم منح هذه الموافقة للدليل الافتراضي. يتم منح الأذونات لـ Microsoft Graph تلقائياً عند تسجيل تطبيقك لأول مرة مع دليل Azure النشط.
إنشاء سر عميل
يحتاج التطبيق إلى سر العميل لإثبات هويته عند طلب رمز مميز. لأسباب أمنية، تحد Microsoft من إنشاء أسرار العميل لمدة تزيد عن 24 شهرًا وتوصي بشدة بتعيين هذا على قيمة أقل من 12 شهرًا. لإضافة سر العميل، اتبع هذه الخطوات:
انتقل إلى تسجيل التطبيق الخاص بك في مدخل Microsoft Azure.
حدد الإعداد Certificates & secrets.
ضمن Client secrets، انقر New client secret لإنشاء سر جديد.
قدم وصفًا للسر، واختر فترة انتهاء الصلاحية المطلوبة.
انسخ فورًا قيمة new secret إلى مكان آمن. ستظهر لك القيمة الكاملة مرة واحدة فقط.

تفعيل تدفق المنح الضمني
بعد ذلك، قم بتكوين تدفق المنح الضمني لتطبيقك. اتبع الخطوات التالية:
انتقل إلى تسجيل التطبيق الخاص بك في مدخل Microsoft Azure.
في قسم الإدارة، حدد إعداد المصادقة.
في قسم المنحة الضمنية، حدد خانة الاختيار لتمكين الرموز المميزة للمعرف، كما هو موضح في الصورة التالية:
مكتبات العميل للحصول على الرمز المميز
بمجرد تسجيل تطبيقك ومنحه أذونات للوصول إلى البيانات في تخزين الكائنات الثنائية كبيرة الحجم في Azure أو تخزين قائمة الانتظار، يمكنك إضافة رمز إلى التطبيق الخاص بك لمصادقة مبدأ أمان والحصول على رمز OAuth 2.0 المميز. للمصادقة والحصول على الرمز المميز، يمكنك استخدام إحدى مكتبات مصادقة النظام الأساسي لهوية Microsoft أو مكتبة أخرى مفتوحة المصدر تدعم OpenID Connect 1.0. يمكن للتطبيق الخاص بك بعد ذلك استخدام رمز الوصول لتفويض طلب مقابل تخزين الكائنات الثنائية كبيرة الحجم في Azure أو تخزين قائمة الانتظار.
للحصول على قائمة بالسيناريوهات التي يتم دعم الحصول على الرموز المميزة لها، راجع قسم تدفقات المصادقة في وثائق مكتبة مصادقة Microsoft (MSAL).
قيم معروفة للمصادقة مع Azure AD
لمصادقة مبدأ أمان مع Azure AD، تحتاج إلى تضمين بعض القيم المعروفة في التعليمات البرمجية الخاصة بك.
سلطة Azure AD
بالنسبة إلى السحابة العامة من Microsoft، تكون سلطة Azure AD الأساسية كما يلي، حيث يكون معرّف المستأجر هو معرّف مستأجر Active Directory (أو معرّف الدليل):
https://login.microsoftonline.com/<tenant-id>/
يعرّف معرّف المستأجر مستأجر دليل Azure النشط لاستخدامه للمصادقة. يشار إليه أيضًا باسم معرف الدليل. لاسترداد معرف المستأجر، انتقل إلى صفحة نظرة عامة لتسجيل التطبيق الخاص بك في مدخل Azure، وانسخ القيمة من هناك.
معرف مورد تخزين Azure
يشير معرف مورد Azure AD إلى الجمهور الذي يمكن استخدام رمز مميز تم إصداره لتوفير الوصول إلى مورد Azure. في حالة تخزين Azure، قد يكون معرف المورد خاصًا بحساب تخزين واحد، أو قد ينطبق على أي حساب تخزين. يصف الجدول التالي القيم التي يمكنك توفيرها لمعرف المورد:
| معرف المورد | الوصف |
|---|---|
https://<account>.blob.core.windows.net https://<account>.queue.core.windows.net |
نقطة نهاية الخدمة لحساب تخزين معين. استخدم هذه القيمة للحصول على رمز مميز للمصادقة على الطلبات لحساب وخدمات تخزين Azure المحددة فقط. استبدل القيمة الموجودة بين قوسين باسم حساب التخزين الخاص بك. |
https://storage.azure.com/ |
يُستخدم للحصول على رمز مميز للمصادقة على الطلبات لأي حساب تخزين Azure. |
مثال على رمز .NET: إنشاء الكائنات الثنائية كبيرة الحجم للكتلة
يوضح مثال الرمز كيفية الحصول على رمز وصول من Azure AD. يتم استخدام رمز الوصول لمصادقة المستخدم المحدد ثم تفويض طلب لإنشاء الكائنات الثنائية كبيرة الحجم للكتلة. لتشغيل هذا النموذج، اتبع أولاً الخطوات الموضحة في الأقسام السابقة.
لطلب الرمز المميز، ستحتاج إلى القيم التالية من تسجيل التطبيق الخاص بك:
- اسم مجال Azure AD الخاص بك. استرجع هذه القيمة من صفحة نظرة عامة في Azure Active Directory الخاص بك.
- معرّف المستأجر (أو الدليل). استرجع هذه القيمة من صفحة نظرة عامة لتسجيل التطبيق الخاص بك.
- معرّف العميل (أو التطبيق). استرجع هذه القيمة من صفحة نظرة عامة لتسجيل التطبيق الخاص بك.
- عنوان URI لإعادة توجيه العميل. استرجع هذه القيمة من إعدادات المصادقة لتسجيل التطبيق الخاص بك.
- قيمة سر العميل. استرجع هذه القيمة من الموقع الذي نسختها إليه مسبقًا.
إنشاء حساب تخزين وحاوية
لتشغيل نموذج التعليمات البرمجية، قم بإنشاء حساب تخزين ضمن نفس الاشتراك مثل Azure Active Directory. ثم قم بإنشاء حاوية داخل حساب التخزين هذا. سينشئ نموذج التعليمات البرمجية الكائنات الثنائية كبيرة الحجم للكتلة في هذه الحاوية.
بعد ذلك، قم بتعيين دور مساهم بيانات الكائنات الثنائية كبيرة الحجم للتخزين بشكل صريح إلى حساب المستخدم الذي ستقوم بموجبه بتشغيل نموذج التعليمات البرمجية. لمعرفة كيفية تعيين هذا الدور في مدخل Azure، راجع تعيين دور Azure للوصول إلى بيانات الكائنات الثنائية كبيرة الحجم.
ملاحظة
عند إنشاء حساب تخزين Azure، لا يتم تعيين أذونات لك تلقائيًا للوصول إلى البيانات عبر Azure AD. يجب عليك تعيين دور Azure لنفسك بشكل صريح لتخزين Azure. يمكنك تعيينه على مستوى اشتراكك أو مجموعة الموارد أو حساب التخزين أو الحاوية أو قائمة الانتظار.
قبل تعيين دور للوصول إلى البيانات لنفسك، ستتمكن من الوصول إلى البيانات في حساب التخزين الخاص بك عبر مدخل Azure لأن مدخل Azure يمكنه أيضًا استخدام مفتاح الحساب للوصول إلى البيانات. لمزيد من المعلومات، راجع اختيار كيفية تخويل الوصول إلى بيانات البيانات الثنائية الكبيرة في مدخل Azure.
قم بإنشاء تطبيق ويب يسمح بالوصول إلى مساحة تخزين الكائنات الثنائية كبيرة الحجم باستخدام Azure AD
عندما يصل تطبيقك إلى تخزين Azure، فإنه يفعل ذلك نيابةً عن المستخدم، مما يعني أنه يتم الوصول إلى موارد البيانات الثنائية الكبيرة أو قائمة الانتظار باستخدام أذونات المستخدم الذي قام بتسجيل الدخول. لتجربة مثال الرمز هذا، تحتاج إلى تطبيق ويب يطالب المستخدم بتسجيل الدخول باستخدام هوية Azure AD. يمكنك إنشاء التطبيق الخاص بك أو استخدام نموذج التطبيق المقدم من Microsoft.
يتوفر نموذج تطبيق ويب مكتمل يكتسب رمزًا مميزًا ويستخدمه لإنشاء الكائنات الثنائية كبيرة الحجم في تخزين Azure على GitHub. قد تكون مراجعة العينة المكتملة وتشغيلها مفيدة في فهم أمثلة التعليمات البرمجية. للحصول على إرشادات حول كيفية تشغيل العينة المكتملة، راجع القسم بعنوان عرض وتشغيل العينة المكتملة.
إضافة مراجع واستخدام العبارات
من Visual Studio، قم بتثبيت مكتبة عميل تخزين Azure. من قائمة الأدوات، حدد مدير الحزم NuGet، ثم وحدة تحكم مدير الحزم. اكتب الأوامر التالية في نافذة وحدة التحكم لتثبيت الحزم الضرورية من مكتبة عميل تخزين Azure لـ .NET:
Install-Package Azure.Storage.Blobs
Install-Package Microsoft.Identity.Web -Version 0.4.0-preview
بعد ذلك، أضف عبارات الاستخدام التالية إلى ملف HomeController.cs:
using Microsoft.Identity.Web; //MSAL library for getting the access token
using Azure.Storage.Blobs;
إنشاء البيانات الثنائية كبيرة الحجم للكتلة
أضف القصاصة البرمجية التالية لإنشاء البيانات الثنائية كبيرة الحجم للكتلة. تذكر استبدال القيم الموجودة بين قوسين بقيم خاصة بك:
private static async Task<string> CreateBlob(TokenAcquisitionTokenCredential tokenCredential)
{
Uri blobUri = new Uri("https://<storage-account>.blob.core.windows.net/<container>/Blob1.txt");
BlobClient blobClient = new BlobClient(blobUri, tokenCredential);
string blobContents = "Blob created by Azure AD authenticated user.";
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
using (MemoryStream stream = new MemoryStream(byteArray))
{
await blobClient.UploadAsync(stream);
}
return "Blob successfully created";
}
ملاحظة
لتفويض عمليات الكائنات الثنائية كبيرة الحجم وقائمة الانتظار باستخدام رمز OAuth 2.0 المميز، يجب عليك استخدام HTTPS.
في المثال أعلاه، تتعامل مكتبة عميل .NET مع تفويض الطلب لإنشاء البيانات الثنائية كبيرة الحجم للكتلة. تتعامل مكتبات عملاء تخزين Azure للغات أخرى أيضًا مع تفويض الطلب نيابةً عنك. ومع ذلك، إذا كنت تتصل بعملية تخزين Azure باستخدام رمز OAuth المميز باستخدام واجهة برمجة تطبيقات REST، فستحتاج إلى إنشاء رأس التفويض باستخدام رمز OAuth المميز.
للاتصال بعمليات خدمة الكائنات الثنائية كبيرة الحجم وقائمة الانتظار باستخدام رموز وصول OAuth، قم بتمرير رمز الوصول في رأس التفويض باستخدام مخطط الرمز المميز للحامل وحدد إصدار خدمة 2017-11-09 أو أعلى، كما هو موضح في المثال التالي:
GET /container/file.txt HTTP/1.1
Host: mystorageaccount.blob.core.windows.net
x-ms-version: 2017-11-09
Authorization: Bearer eyJ0eXAiOnJKV1...Xd6j
الحصول على رمز وصول من Azure AD
بعد ذلك، أضف طريقة تطلب رمزًا مميزًا من Azure AD نيابة عن المستخدم. تحدد هذه الطريقة النطاق الذي سيتم منح الأذونات له. لمزيد من المعلومات حول الأذونات والنطاقات، راجع الأذونات والموافقة في نقطة نهاية النظام الأساسي لهوية Microsoft.
استخدم معرّف المورد لإنشاء النطاق الذي تريد الحصول على الرمز المميز من أجله. ينشئ المثال النطاق باستخدام معرف المورد مع النطاق user_impersonation المدمج، مما يشير إلى أن الرمز المميز مطلوب نيابة عن المستخدم.
ضع في اعتبارك أنك قد تحتاج إلى تزويد المستخدم بواجهة تمكّن المستخدم من الموافقة على طلب الرمز المميز نيابة عنه:
[AuthorizeForScopes(Scopes = new string[] { "https://storage.azure.com/user_impersonation" })]
public async Task<IActionResult> Blob()
{
string message = await CreateBlob(new TokenAcquisitionTokenCredential(_tokenAcquisition));
ViewData["Message"] = message;
return View();
}
الموافقة هي عملية منح المستخدم الإذن لتطبيق للوصول إلى الموارد المحمية بالإنابة عنك. يدعم النظام الأساسي للهوية من Microsoft الموافقة المتزايدة، مما يعني أن مبدأ الأمان يمكن أن يطلب حدًا أدنى من مجموعة الأذونات في البداية وإضافة أذونات بمرور الوقت حسب الحاجة. عندما تطلب التعليمات البرمجية الخاصة بك رمز وصول، حدد نطاق الأذونات التي يحتاجها تطبيقك. لمزيد من المعلومات حول الموافقة المتزايدة، راجع الموافقة المتزايدة والديناميكية.
عرض وتشغيل العينة المكتملة
لتشغيل التطبيق النموذجي، قم أولاً بنسخه أو تنزيله من GitHub. ثم قم بتحديث التطبيق كما هو موضح في الأقسام التالية.
قم بتوفير القيم في ملف الإعدادات
قم بتحديث ملف appsettings.json بقيمك الخاصة كما يلي:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "<azure-ad-domain-name>.onmicrosoft.com",
"TenantId": "<tenant-id>",
"ClientId": "<client-id>",
"ClientSecret": "<client-secret>",
"ClientCertificates": [
],
"CallbackPath": "/signin-oidc"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
تحديث حساب التخزين واسم الحاوية
في ملف HomeController.cs، قم بتحديث URI الذي يشير إلى الكائنات الثنائية كبيرة الحجم للكتلة لاستخدام اسم حساب التخزين والحاوية، واستبدال القيم الموجودة بين قوسين بقيم خاصة بك:
https://<storage-account>.blob.core.windows.net/<container>/Blob1.txt