معرض Microsoft Graph API هو خدمة تتيح لك قراءة وتعديل وإدارة معظم جوانب Azure AD و Office 365 تحت واجهة برمجة تطبيقات REST واحدة. في هذا المقال، تعلم كيفية تحويل واجهة برمجة التطبيقات الخاصة بك إلى واجهة برمجة PowerShell Graph API.
المتطلبات المسبقة
إذا كنت ترغب في متابعتي في هذا المقال، تأكد أولاً من تحقيق الشروط التالية:
- تشغيل Windows PowerShell 5.1 (هذه هي الإصدار الذي قمت بالاختبار معه. قد تعمل الإصدارات الأخرى ولكن ليست مضمونة)
- مستأجر Azure
- مصادقة على Azure باستخدام حساب يتمتع بأذونات مسؤول عام على مستوى المجال أو أذونات تسجيل التطبيق في الاشتراك ومسؤول عام لقبول طلبات تسجيل التطبيق الخاصة بك.
إنشاء هوية تطبيق لـ Microsoft Graph API
للوصول إلى Microsoft Graph API، تحتاج في البداية إلى هوية للحصول على رمز OAuth. يتم ذلك في المقام الأول من خلال هوية تطبيق يمكنك إنشاؤها في بوابة Azure. يمكنك إنشاء هوية تطبيق عبر بوابة Azure. للقيام بذلك:
- انتقل إلى بوابة Azure وانتقل إلى Azure Active Directory.
- انقر فوق تسجيل التطبيقات تحت الإدارة في القائمة اليسرى وانقر فوق زر التسجيل الجديد.

- أدخل اسمًا لتطبيقك وانقر فوق تسجيل.
- انسخ معرف التطبيق لاستخدامه لاحقًا.

إنشاء مفاتيح لـ Microsoft Graph API
يمكنك المصادقة على واجهة برمجة التطبيقات (Graph API) باستخدام طريقتين رئيسيتين: AppId/Secret والمصادقة بناءً على الشهادة. ستحتاج إلى المصادقة عند الاتصال بواجهة برمجة التطبيقات باستخدام PowerShell.
لنتناول كيفية المصادقة باستخدام كلا الطريقتين.
AppId/Secret
معرف التطبيق/السرّ هو عبارة عن اسم مستخدم/كلمة مرور عادية. يتكون معرف التطبيق من GUID بدلاً من اسم المستخدم والكلمة السرية هي سلسلة متعشّية.
لإنشاء سرّ، انقر فوق الشهادات والأسرار في القائمة اليسارية واضغط على سرّ عميل جديد.

أدخل وصفًا للسرّ وحدد متى تريد أن ينتهي الصلاحية. الآن، مسألة طلب الإذن فقط حتى تتمكن من الوصول إلى البيانات التي تريدها.
الشهادة
هناك إمكانية لإنشاء شهادة موقعة ذاتياً وتحميل مفتاحها العمومي إلى Azure. هذه الطريقة المفضلة والأكثر أمانًا للمصادقة.
ستحتاج أولاً إلى إنشاء شهادة موقعة ذاتياً. لحسن الحظ، يمكن القيام بذلك بسهولة باستخدام PowerShell.
الآن، قم بتحميل الشهادة الخاصة بك الموقعة ذاتيًا التي قمت بتصديرها إلى $CerOutputPath
إلى تطبيق Azure الخاص بك بالنقر فوق الشهادات والأسرار في القائمة اليسارية والضغط على تحميل الشهادة.

إضافة الأذونات إلى التطبيق
منح التطبيق الأذونات المناسبة أمر مهم – ليس فقط لوظيفة تطبيقك ولكن أيضًا للأمان. يمكن العثور على معرفة ذلك و (تقريبًا) كل شيء آخر في واجهة برمجة تطبيقات Microsoft Graph في الوثائق.
بمجرد أن أنشّئ هذا، سأجمع كل أحداث الأمان من مستأجري. للقيام بذلك، أحتاج SecurityEvents.Read.All كصلاحية دنيا. بهذا يمكنني جمع الأحداث المتعلقة بالسفر المستحيل والمستخدمين الذين يتصلون عبر VPN/TOR وما شابه.
لإضافة SecurityEvents.Read.All إلى تطبيقك – انقر على أذونات الواجهة البرمجية للتطبيقات ثم إضافة أذن. سيقدم لك ذلك ليس فقط واجهة برمجة الرسوم بل أيضًا العديد من التطبيقات الأخرى في خدمة Azure. معظم هذه التطبيقات سهلة الاتصال بها بمجرد معرفتك كيفية الاتصال بواجهة برمجة الرسوم لشركة Microsoft.
انقر على Microsoft Graph > أذونات التطبيق > أحداث الأمان وافحص SecurityEvents.Read.All. بعد ذلك، اضغط على زر إضافة أذن.
هل لاحظت أن العمود الموافقة الإدارية مطلوبة تم تعيينه إلى نعم على تلك الإذن؟ هذا يعني أن مسؤول المستأجر يحتاج إلى الموافقة قبل أن يتم إضافة الإذن إلى التطبيق.

إذا كنت مسؤولاً عالمياً، اضغط على منح الموافقة الإدارية لـ أو اطلب من مسؤول عالمي الموافقة عليه. طلب الإذن من المستخدم بدلاً من مسؤول تعيين القراءة/الكتابة هو جزء كبير من المصادقة باستخدام OAuth. ولكن هذا يتيح لنا تجاوزه لمعظم الأذونات في واجهة برمجة الرسوم لشركة Microsoft.
ربما رأيت هذا بالفعل على Facebook أو Google: “هل تسمح لتطبيق X بالوصول إلى ملفك الشخصي؟”

الآن أنت مستعد تمامًا – لنقم بتسجيل الدخول والحصول على بعض البيانات!
احصل على رمز الوصول (معرّف التطبيق والسرّ)
سنحتاج إلى إرسال طلب للحصول على رمز وصول من نقطة نهاية Microsoft Graph OAuth. وفي جسم هذا الطلب، يجب علينا توفير:
client_id
– معرّف التطبيق الخاص بك – مُشفر في عنوان URLclient_secret
– سر تطبيقك – مُشفر في عنوان URLscope
– عنوان URL مُشفر يحدد ما الذي ترغب في الوصول إليهgrant_type
– نوع أسلوب المصادقة الذي تستخدمه
عنوان URL لنقطة النهاية هو https://login.microsoftonline.com/<اسم المستأجر>/oauth2/v2.0/token. يمكنك طلب رمز الوصول باستخدام PowerShell وواجهة برمجة التطبيقات باستخدام قطعة الشيفرة التالية.
احصل على رمز الوصول (باستخدام شهادة)
المصادقة على واجهة برمجة التطبيقات Microsoft Graph باستخدام شهادة تختلف قليلاً عن تدفق AppId/Secret العادي. للحصول على رمز وصول باستخدام شهادة، يجب عليك:
- إنشاء رأس رمز JWT في جافا.
- إنشاء حمولة JWT.
- قم بتوقيع رأس ال JWT والحمولة باستخدام الشهادة الذاتية الموقعة مسبقًا. سيتم إنشاء رمز وصول مصنوع ذاتيًا يُستخدم لطلب رمز وصول Microsoft Graph.
- إنشاء جسم طلب يحتوي على:
client_id=<معرف التطبيق>
client_assertion=<JWT>
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
scope=<نطاق URLEncoded>
grant_type=client_credentials
- قم بعمل طلب برمز الجسم إلى نقطة النهاية oauth بـ
Authorization=<JWT>
في رأسه.
كيفية القيام بذلك لم يكن واضحًا في وثائق Microsoft ولكن هذا هو السكريبت باوشيل لجعل هذا يحدث:
فهم إخراج طلب الوصول إلى الرمز
بمجرد الحصول على رمز الوصول سواء عبر معرف التطبيق/السر أو عبر الشهادة، يجب أن ترى كائنًا يحتوي على أربع خصائص.
token_type
– نوع الرمزexpires_in
– الوقت بالثواني الذي يكون فيه رمز الوصول صالحًاext_expires_in
– مثلexpires_in
ولكن لضمان الصمود في حالة انقطاع خدمة الرمزaccess_token
– هذا هو هدفنا
بعد ذلك، ستقوم بإنشاء رأس باستخدام token_type
و access_token
وتبدأ في إجراء طلبات باستخدام PowerShell إلى واجه برمجة التطبيقات في Microsoft Graph.
إجراء طلبات إلى واجه برمجة التطبيقات باستخدام PowerShell في Microsoft
ابدأ الآن في إجراء بعض الطلبات إلى واجهة برمجة التطبيقات.
وفقًا لمثالنا، ستحتاج أولاً إلى عنوان URL لعرض التنبيهات الأمان. تذكر استخدام وثائق واجه برمجة التطبيقات في Microsoft Graph لرؤية ما هو مطلوب.
في هذه الحالة، تحتاج إلى رأس مع Authorization=Bearer <access_token>
وطلب GET نحو نقطة نهاية تنبيهات واجه برمجة التطبيقات. إليك كيفية القيام بذلك باستخدام PowerShell.
الآن إذا كان لديك أي تنبيهات أمان في المتغير $SecurityAlerts
، يجب أن تبدو مثل هذا:
فحص تنبيه أمان واحد كـ JSON سيظهر بهذا الشكل:
فهم وإدارة إخراج واجهة برمجة التطبيقات
تحدد واجهة برمجة التطبيقات لـ Microsoft Graph حدًا لكل وظيفة على عدد العناصر التي ستعيد. يكون هذا الحد لكل وظيفة، ولكن لنفترض أنه 1000 عنصر. يعني ذلك أنه يمكنك الحصول فقط على حد أقصى من 1000 عنصر في طلبك.
عندما يتم الوصول إلى هذا الحد، سيتم استخدام تقسيم الصفحات لتقديم باقي العناصر. يتم ذلك عن طريق إضافة خاصية @odata.nextLink
إلى إجابة طلبك. تحتوي @odata.nextLink
على عنوان URL يمكنك استدعائه للحصول على الصفحة التالية من طلبك.
يمكنك قراءة جميع العناصر عن طريق التحقق من وجود هذه الخاصية واستخدام حلقة:
الاستنتاج
بعد أن تتعلم كيفية المصادقة على واجهة برمجة التطبيقات Graph، يصبح من السهل جدًا جمع البيانات منها. إنه خدمة قوية تستخدم بشكل أقل مما يجب.
لحسن الحظ، هناك العديد من الوحدات المتاحة بالفعل للاستفادة من واجهة برمجة التطبيقات Microsoft Graph، ولكن قد تحتاج إلى إنشاء وحدتك الخاصة لتلبية احتياجاتك. باستخدام المهارات التي تعلمتها في هذا المقال، يجب أن تكون على مسار جيد.
لمزيد من المعلومات حول التحكم في الوصول الضيف في Office 365، قد كتبت مقالًا مفصلًا على مدونتي أشجعك على التحقق منه.