التفويض

تسمح التطبيقات بالاتصالات إلى واجهة برمجة التطبيقات للعميل الخاصة ببرنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" باستخدام OAuth. يوضّح هذا المستند تفويض واجهة برمجة التطبيقات ل موفّري إدارة الخدمات الجوّالة للمؤسسات (EMM) ومطوّري تكنولوجيا المعلومات في المؤسسات. بعد قراءة هذا المستند، ستعرف كيفية السماح بطلبات البيانات من واجهة برمجة التطبيقات في تطبيقك واشرح متطلبات الحساب لمستخدمي تطبيقك.

دليل البدء السريع في ما يتعلّق بالتفويض

  • لإعداد مشروع Google Cloud Platform باستخدام واجهة برمجة التطبيقات "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" وأسرار عميل OAuth، يمكنك تشغيل هذا المعالج.
  • إنشاء نموذج رمز البدء السريع لتطبيق Java أو .NET أو Python استخدام مكتبات برامج واجهة برمجة التطبيقات من Google لدعم اللغات.

نظرة عامة

العلاقة بين الأجهزة وموارد العملاء

  1. مشرف واحد أو أكثر من مشرفي تكنولوجيا المعلومات هم مستخدمون في حساب عميل يستخدم برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة".
  2. يستخدم مشرفو تكنولوجيا المعلومات حساب Google لمصادقة أنفسهم.
  3. تُرسِل طلبات واجهة برمجة التطبيقات رمزًا مميزًا لبروتوكول OAuth2 لتفويض طلبات واجهة برمجة التطبيقات بالنيابة عن أحد مشرفي تكنولوجيا المعلومات.

حسابات العملاء

ينتمي مستخدمو المؤسسة (مشرفو تكنولوجيا المعلومات) وإعداداتهم إلى حساب العميل. يكون حساب العميل مشابهًا لمجموعة، وليس مستخدم فردي. يقوم المورّد بإعداد العميل عندما تقوم المؤسسة لأول مرة شراء أجهزة مخصّصة لعملية "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة". يدير مشرفو تكنولوجيا المعلومات المستخدمين الآخرين في مؤسستهم باستخدام بوابة "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة".

تستخدم واجهة برمجة التطبيقات أرقام تعريف رقمية للعملاء لتحديد الحسابات. لقد تجاوزت الرقم التعريفي للعميل كجزء من مسار عنوان URL عند طلب طرق واجهة برمجة التطبيقات. يحتاج تطبيقك إلى مزيد من المعلومات الرقم التعريفي للعميل قبل طلب أي طرق لواجهة برمجة التطبيقات.

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

Java

AndroidProvisioningPartner.Customers.List accountRequest = service.customers().list();
accountRequest.setPageSize(100);
CustomerListCustomersResponse accountResponse = accountRequest.execute();

List<Company> customers = accountResponse.getCustomers();
if (customers == null || customers.isEmpty()) {
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    System.out.println("No zero-touch enrollment account found.");
} else {
    // Print the customers in this page.
    for (Company customer : customers) {
        System.out.format("%s\tcustomers/%d\n",
              customer.getCompanyName(), customer.getCompanyId());
    }
}

NET.

CustomersResource.ListRequest accountRequest = service.Customers.List();
accountRequest.PageSize = 100;
CustomerListCustomersResponse accountResponse = accountRequest.Execute();
IList<Company> customers = accountResponse.Customers ?? new List<Company>();
if (customers.Count == 0)
{
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    Console.WriteLine("No zero-touch enrollment account found.");
}
foreach (Company customer in customers)
{
    Console.WriteLine("{0}\tcustomers/{1}",
                      customer.CompanyName,
                      customer.CompanyId);
}

Python

response = service.customers().list(pageSize=100).execute()
if 'customers' not in response:
  # No accounts found for the user. Confirm the Google Account
  # that authorizes the request can access the zero-touch portal.
  print('No zero-touch enrollment account found.')
  response['customers'] = []

for customer in response['customers']:
  print('{0}\tcustomers/{1}'.format(
      customer['companyName'], customer['companyId']))

وفي تطبيقك، ستحتاج إلى التنقل في صفحات نتائج الحساب بسبب في المثال أعلاه، ستتم طباعة أول 100 حساب فقط. لمعرفة كيفية القيام بذلك، اقرأ النتائج المقسّمة إلى صفحات.

عادةً ما يكون لدى المؤسسة حساب عميل واحد ولكن مؤسسات أكبر ويمكنك استخدام حسابات عملاء منفصلة لكل قسم. لأنه يمكن لمشرف تكنولوجيا المعلومات عضوًا في حسابات عملاء مختلفة، فيجب أن يساعد تطبيقك المستخدمين في العثور على استخدام حسابات عملاء جدد. في تطبيقك، يمكنك تصنيف كل حساب عميل باستخدام القيمة companyName.

المستخدمون

يفوّض مشرفو تكنولوجيا المعلومات طلبات البيانات من واجهة برمجة التطبيقات التي يرسلها تطبيقك نيابةً عنهم. إلى الموافقة على طلبات البيانات من واجهة برمجة التطبيقات، على مستخدم تطبيقك إجراء ما يلي:

  1. ربط حساب Google بعنوان البريد الإلكتروني
  2. انضم إلى حساب عميل باستخدام عنوان البريد الإلكتروني نفسه.
  3. يجب قبول بنود خدمة العملاء الذين يستخدمون برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة".

لمساعدة مستخدمي تطبيقك في الإعداد، يمكنك إعادة استخدام إرشاداتنا لمشرفي تكنولوجيا المعلومات في الحصول على البدء وربط حساب Google في وثائقك الخاصة.

إدارة المستخدمين

مشرفو تكنولوجيا المعلومات يديروا حسابات العملاء في برنامج "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" بوابة التسجيل الخاصة بك. ويكون للمستخدمين في حساب العميل دورًا إما المالك أو المشرف يحصل كلا الدورَين على إذن الوصول نفسه إلى واجهة برمجة التطبيقات Customer API، ولكن يمكن للمالك إدارة المستخدمين الآخرين.

قبول بنود الخدمة

قبل أن يتمكّن مستخدمو تطبيقك من تفويض طلبات البيانات من واجهة برمجة التطبيقات، عليهم قبول أحدث بنود الخدمة. يحدث ذلك عندما يستخدم مشرفو تكنولوجيا المعلومات برنامج "إعداد الأجهزة الجوّالة للمؤسّسات دفعةً واحدة" للمرة الأولى أو عندما تحديث بنود الخدمة. عندما لا يقبل المستخدم أحدث أحكام الخدمة والشروط، تعرض واجهة برمجة التطبيقات رمز حالة 403 Forbidden لبروتوكول HTTP ويحتوي نص الاستجابة على رمز TosError.

تطلب البوابة تلقائيًا من المستخدمين قبول أحدث بنود الخدمة عند توقيعهم. بوصة للاطّلاع على الأساليب المقترَحة التي يمكن أن يتضمنها تطبيقك، يُرجى الاطّلاع على بنود الاسم المعرِّف الخدمة في دليل دمج إدارة الخدمات الجوّالة للمؤسسات (EMM).

إضافة إذن إلى تطبيقك

إنّ كل طلب يرسله تطبيقك إلى واجهة برمجة تطبيقات العميل يجب أن يتضمّن تفويضًا. الرمز المميز. ويساعد الرمز المميز محرك البحث Google في التعرّف على تطبيقك. نظرًا لأن وصول واجهة برمجة تطبيقات العميل إلى بيانات المستخدم، يجب أن يكون التفويض من قِبل مالك البيانات. يفوّض تطبيقك تفويض واجهة برمجة التطبيقات لمشرفي تكنولوجيا المعلومات باستخدام OAuth 2.0. والبروتوكول.

التعليمات

نوفّر أدلة البدء السريع لتطبيقات Java و.NET Python إذا كنت تستخدم لغة مختلفة، اتّبِع الخطوات التالية لإعداد التفويض لتطبيقك.

لمعرفة المزيد من المعلومات حول التفويض، يمكنك الاطّلاع على استخدام OAuth 2.0 للوصول إلى Google. API.

نطاقات التفويض

استخدام نطاق تفويض واجهة برمجة التطبيقات https://www.googleapis.com/auth/androidworkzerotouchemm في تطبيقك لطلب رمز الدخول إلى OAuth 2.0.

تتحكم معلمة النطاق في مجموعة الموارد والعمليات التي يمكن الوصول إليها يسمح الرمز المميز بالمكالمات. تكون رموز الدخول صالحة لمجموعة العمليات فقط والموارد الموضحة في نطاق طلب الرمز المميز. تغطي واجهة برمجة التطبيقات جميع الطرق والموارد مع نطاق "إعداد الأجهزة الجوّالة للمؤسسات دفعةً واحدة" الفردي المعروض أعلاه.

للحصول على مثال على نطاق التسجيل بدون تلامس المستخدمين المستخدَم مع مكتبة عملاء Google API، يمكنك الاطّلاع على أدلة البدء السريع لـ Java و‎.NET وPython. لمزيد من المعلومات حول استخدام نطاقات Google API، اطّلِع على استخدام OAuth 2.0 للوصول إلى Google APIs

أفضل الممارسات لمفاتيح واجهة برمجة التطبيقات

عند استخدام مفاتيح واجهة برمجة التطبيقات في تطبيقاتك، احرص على الحفاظ على أمانها. يمكن أن يؤدي الكشف عن بيانات الاعتماد علنًا إلى اختراق حسابك، ما قد يؤدي إلى تحصيل رسوم غير متوقّعة من حسابك. للاحتفاظ على أمان مفاتيح واجهة برمجة التطبيقات، اتّبِع أفضل الممارسات التالية:

عدم تضمين مفاتيح واجهة برمجة التطبيقات في الرمز مباشرةً
قد تتعرّض مفاتيح واجهة برمجة التطبيقات المضمّنة في الرمز البرمجي عن طريق الخطأ إلى عامة - على سبيل المثال، إذا نسيت إزالة المفاتيح من التعليمات البرمجية التي مشاركتها. بدلاً من تضمين مفاتيح واجهة برمجة التطبيقات في تطبيقاتك، يمكنك تخزينها في متغيرات البيئة أو في ملفات خارج مصدر التطبيق شَجَرَة
عدم تخزين مفاتيح واجهة برمجة التطبيقات في الملفات داخل شجرة المصدر لتطبيقك
في حال تخزين مفاتيح واجهة برمجة التطبيقات في ملفات، يجب إبقاء الملفات خارج شجرة ملف المصدر في تطبيقك للمساعدة في ضمان عدم انتهاء صلاحية مفاتيحك في نظام التحكّم في ملف المصدر . ويُعتبر ذلك أمرًا مهمًا على وجه الخصوص إذا كنت تستخدم رمز مصدر عامًا مثل GitHub.
يُرجى تقييد استخدام مفاتيح واجهة برمجة التطبيقات من خلال عناوين IP أو عناوين URL المُحيلة فقط وتطبيقات الأجهزة الجوّالة التي تحتاج إليها
من خلال تقييد عناوين IP وعناوين URL للمُحيلين والتطبيقات المتوافقة مع الأجهزة الجوّالة التي يمكنها استخدام كل مفتاح، يمكنك تقليل تأثير مفتاح واجهة برمجة التطبيقات المخترَق. يمكنك تحديد المضيفين والتطبيقات التي يمكنها استخدام كل مفتاح من وحدة التحكم في واجهة Google API من خلال فتح صفحة بيانات الاعتماد ثم إنشاء واجهة برمجة تطبيقات جديدة بالإعدادات التي تريدها، أو تعديل إعدادات واجهة برمجة التطبيقات المفتاح.
حذف مفاتيح واجهة برمجة التطبيقات غير اللازمة
لتقليل احتمال تعرُّضك للهجوم، عليك حذف أي مفاتيح واجهة برمجة تطبيقات لم يتم حذفها الحاجة الأطول.
إعادة إنشاء مفاتيح واجهة برمجة التطبيقات بصفة دورية
يمكنك إعادة إنشاء مفاتيح واجهة برمجة التطبيقات من وحدة التحكم في واجهة Google API من خلال فتح صفحة بيانات الاعتماد واختيار مفتاح واجهة برمجة التطبيقات والنقر على إعادة الإنشاء لكل مفتاح. بعد ذلك، حدِّث تطبيقاتك لاستخدام الأداة التي تم إنشاؤها المفاتيح. ستبقى المفاتيح القديمة في العمل لمدة 24 ساعة بعد إنشاء الملف. استبدال المفاتيح.
مراجعة الرمز البرمجي قبل نشره علنًا
تأكَّد من أنّ الرمز لا يحتوي على مفاتيح واجهة برمجة التطبيقات أو أي رموز خاصة أخرى. المعلومات قبل إتاحة الرمز للجميع.