أفضل الممارسات

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

التعامل مع بيانات اعتماد العميل بأمان

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

التعامل مع رموز المستخدمين المميزة بشكل آمن

تتضمّن رموز المستخدمين المميزة كلاً من رموز التحديث ورموز الدخول التي يستخدمها تطبيقك. تخزين الرموز المميزة بشكل آمن في حالة عدم الاستخدام وعدم إرسالها مطلقًا كنص عادي استخدِم نظام تخزين آمنًا مناسبًا للنظام الأساسي الذي تستخدمه، مثل Keystore على Android أو Keychain Services على iOS وmacOS أو Credential Locker على Windows.

إبطال الرموز المميزة فور الاستغناء عنها وحذفها نهائيًا من أنظمتك

بالإضافة إلى ذلك، ننصحك أيضًا باتّباع أفضل الممارسات التالية لمنصتك:

  • بالنسبة إلى التطبيقات من جهة الخادم التي تخزّن الرموز المميزة للعديد من المستخدمين، يجب ترميزها أثناء عدم النشاط والتأكّد من أنّ مخزن البيانات غير متاح للجميع على الإنترنت.
  • بالنسبة إلى تطبيقات سطح المكتب الأصلية، يُنصح بشدة باستخدام بروتوكول مفتاح حماية تبادل الرموز (PKCE) للحصول على رموز تفويض يمكن استبدالها برموز الدخول.

التعامل مع إبطال الرمز المميز لإعادة التحميل وانتهاء صلاحيته

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

استخدام التفويض التدريجي

استخدِم التفويض التزايدي لطلب نطاقات OAuth المناسبة عندما يحتاج تطبيقك إلى الوظيفة.

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

يجب دائمًا طلب النطاقات في السياق لمساعدة المستخدمين على فهم سبب طلب تطبيقك للوصول إلى البيانات وكيفية استخدامها.

على سبيل المثال، قد يتبع تطبيقك النموذج التالي:

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

التعامل مع الموافقة على نطاقات متعددة

عند طلب نطاقات متعددة في آنٍ واحد، قد لا يمنح المستخدمون جميع نطاقات OAuth التي طلبتها. يجب أن يتعامل تطبيقك مع رفض النطاقات من خلال إيقاف الوظائف ذات الصلة.

إذا كانت الوظيفة الأساسية لتطبيقك تتطلّب نطاقات متعدّدة، عليك توضيح ذلك للمستخدم قبل طلب الموافقة.

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

عليك تقليل عدد النطاقات التي يطلبها تطبيقك في المرة الواحدة. بدلاً من ذلك، استخدِم المصادقة المتزايدة لطلب النطاقات في سياق الميزات والوظائف.

استخدام متصفّحات آمنة

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

إنشاء عملاء OAuth وإعدادهم يدويًا

لمنع إساءة الاستخدام، لا يمكن إنشاء برامج تعتمد على بروتوكول OAuth أو تعديلها آليًا. يجب استخدام "وحدة تحكّم مطوّري Google" للإقرار صراحةً ببنود الخدمة، وإعداد عميل OAuth، والاستعداد لعملية التحقّق من OAuth.

بالنسبة إلى مهام سير العمل المبرمَجة، ننصحك باستخدام حسابات الخدمة بدلاً من ذلك.

إزالة عملاء OAuth غير المستخدَمين

راجِع عملاء OAuth 2.0 بانتظام واحذف بشكل استباقي أي عملاء لم يعُد تطبيقك بحاجة إليهم أو أصبحوا قديمين. يُعدّ ترك البرامج غير المستخدَمة مضبوطة يمثّل خطرًا أمنيًا محتملاً لأنّه يمكن إساءة استخدام البرنامج إذا تم اختراق بيانات اعتمادك.

للمساعدة في الحدّ من المخاطر الناتجة عن العملاء غير المستخدَمين، يتم تلقائيًا حذف عملاء OAuth 2.0 الذين ظلّوا غير نشطين لمدة ستة أشهر.

ننصحك بعدم انتظار الحذف التلقائي، بل إزالة العملاء غير المستخدَمين بشكل استباقي. تساهم هذه الممارسة في تقليل مساحة الهجوم في تطبيقك وتضمن مستوى جيدًا من الأمان.