Oauth
ما هو Oauth؟
بروتوكول مفتوح للسماح بترخيص آمن بطريقة بسيطة ومعتادة من تطبيقات الويب والجوال وسطح المكتب - من المستندات
- كان السبب الرئيسي وراء إعداد OAUTH في البداية هو السماح لبيانات مستخدم الوصول إلى التطبيق دون الحاجة إلى إعطائها كلمة مرور المستخدم. مثال على ذلك: تذكر عندما تطلب كل تطبيقات الجهات الخارجية هذه البريد الإلكتروني + كلمة المرور من أجل الوصول إلى جهة اتصال Gmail الخاصة بك ، إلخ؟ انتهاك أمان واضح حيث يمكن أن تتمسك التطبيقات وتكون قادرة على تغيير كلمة المرور الخاصة بك. ستخزن بعض التطبيقات كلمة مرور المستخدمين في نص الشكوى (مخاطر أمان واضحة). الطريقة الوحيدة التي يمكن للمستخدمين إلغاء الوصول إليها هي تغيير كلمات المرور
- تتمثل الميزة الرئيسية المميزة لـ OAUTH في السماح للمستخدمين بإدخال كلمات المرور في تطبيق الطرف الثالث ، ويتم إعادة توجيه المستخدمين إلى خادم OAUTH (التطبيق الأساسي الذي أظنه) لإدخال كلمة المرور الخاصة بهم ثم إعادة توجيههم إلى تطبيق الطرف الثالث الذي يسعى إلى الوصول.
- كانت حالات الاستخدام الأخرى لـ OAuth بعد حالة الاستخدام الأولي حول المنظمات التي كانت تقوم ببناء تطبيقات الطرف الأول على واجهات برمجة التطبيقات الخاصة بها. مثال على ذلك: عند تسجيل الدخول إلى أي خدمة Google (YouTube ، Gmail ، إلخ) ، لا تقوم بتسجيل الدخول مباشرة. يتم إعادة توجيهك إلى خادم OAUTH من Google (Accounts.Google.com) حيث تقوم بتسجيل الدخول ثم إعادة توجيهها إلى خدمة Google بعد المصادقة.
- الفائدة هي مركزية إدارة كلمة المرور لأسباب أمنية.
- فائدة أخرى للمركزية هي أنه يسهل ترقية المصادقة لجميع المستخدمين/الخدمات
OAUTH 2
- كانت هناك بعض حالات الاستخدام كما هو الحال في تطبيقات الهاتف المحمول ، حيث لا يمكن استخدام التنفيذ الأولي لـ OAuth بشكل آمن.
- كان الهدف من OAUTH 2 هو بناء OAUTH 1 لتطبيقات الهاتف المحمول وتبسيط الجوانب التي كانت مربكة لمستهلكي واجهة برمجة التطبيقات.
- كانت القضية مع OAUTH 2 أن هناك تعارضات بين الويب والمساهمين في المؤسسة في البروتوكول. تم وضع الكثير من مجالات الخلاف في وثائق مختلفة ، تاركًا الكثير من الثغرات في البروتوكول (الذي يُطلق عليه الآن إطار عمل في المستند الأساسي نتيجة لذلك).
- النتيجة هي أن تطبيق الويب لـ OAUTH 2 يمكن أن يكون معقدًا ومربكًا حيث ستحتاج إلى تصنيع المعلومات من مسودات مختلفة
- قضايا التنفيذ:
- لا يتطلب المعيار نوعًا رمزيًا
- لا يتطلب أنواع منحة محددة
- لا يعطي إرشادات حول حجم سلسلة الرمز المميز
إنشاء تطبيق OAuth 2
- قم بإنشاء حساب مطور على موقع الويب الخاص بالخدمة وأدخل المعلومات الأساسية حول التطبيق (الاسم ، موقع الويب ، الشعار ، إلخ)
- ستحصل على
client_id و client_secret (أحيانًا) الذي سيستخدمه تطبيقك للتفاعل مع الخدمة. - من الأهمية بمكان تسجيل عنوان URL الذي تم إعادة توجيهه (حيث ستعود خدمة OAUTH 2 للمستخدم بعد أن أذن بتطبيق التطبيق) لتجنب إنشاء تطبيقات ضارة يمكنها سرقة بيانات المستخدم.
- يجب أن يكون عنوان URL إعادة توجيه نقطة نهاية HTTPS لتوفير مهاجم من اعتراض رمز التفويض واختطاف جلسة
- بدلاً من تسجيل URL لإعادة التوجيه المتعددة لحالات التطبيق المختلفة ، توفر OAUTH 2 معلمة " حالة " يمكن استخدامها لتشفير حالة التطبيق.
- المعلمة عبارة عن سلسلة سيتم إرجاعها بعد أن يُسمح للمستخدم بإحضارها إلى الموقع الصحيح في التطبيق. يجب تشفير سلسلة الحالة بطريقة مثل JWT.
- يتم تخزين الحالة التي تم إنشاؤها مبدئيًا في الجلسة ، بعد أن يصرح المستخدم وإعادة توجيهه إلى تطبيق العميل ، يقارن خادم OAUTH سلسلة الحالة مع ما تم تخزينه في البداية في الجلسة قبل تبادل رمز التفويض لرمز الوصول
مفاهيم أخرى تعلمتها
حليقة
- تعتبر عنوان URL للعميل أداة لسطر الأوامر التي يستخدمها المطورون لنقل البيانات من وإلى خادم. دعنا نتواصل مع خادم عن طريق تحديد URL (الموقع) والبيانات التي تريد إرسالها.
- يدعم البروتوكولات المختلفة (HTTP ، HTTPS) ويعمل على كل منصة تقريبًا ، مما يجعلها مثالية لاختبار الاتصالات على أي جهاز تقريبًا
- فوائد:
- محمولة للغاية وقابلة للمقارنة مع نظام التشغيل والجهاز تقريبًا
- مفيد لاختبار نقاط النهاية
- يمكن أن يكون مطولاً ، وبالتالي مفيد لتصحيح الأخطاء
- تسجيل خطأ جيد
تشغيل نص Python على الويب دون إطار مثل Flask أو Django
- ستحتاج أولاً إلى إعداد البرنامج النصي Python كنص CGI
- CGI تعني واجهة البوابة المشتركة. يسمح للتطبيقات بالتواصل مع التطبيقات الأخرى على الإنترنت
- قم أولاً بإنشاء مجلد CIG-Bin وحرك نص Python هناك
- ثم استخدم
http.server من Python لتشغيل خادم HTTP بسيط - قم بتشغيل
python -m http.server --cgi من الدليل الذي يحتوي على CGI -BIN لبدء خادم HTTP في وضع CGI. - انتقل إلى
http://localhost:8000/cgi-bin/your-script.py لتشغيل البرنامج النصي CGI. - في
your-script.py تحتاج إلى تضمين print("Content-type:text/htmlrnrn") لتعيين نوع المحتوى للاستجابة إلى "text/html" لتمكين البرنامج النصي لتشغيله في المتصفح مثل ملف HTML
شبانج (حشوانج)
- رمز خاص في شكل
#! في بداية الملفات القابلة للتنفيذ في أنظمة التشغيل التي تشبه UNIX. - يحدد المسار إلى المترجم القابل للتنفيذ والذي يجب استخدامه لتشغيل البرنامج النصي.
- على سبيل المثال ، يخبر Shebang Like
#!/usr/bin/env python في بداية البرنامج النصي Python النظام لاستخدام مترجم Python الموجود في usr/bin/env python لتشغيل البرنامج النصي.
موارد
- وثائق OAuth
- ما هو Oauth ولماذا يهم؟ - Oktadev على YouTube
- Oauth 2 الخوادم
- IBM: ما هو حليقة؟