terminal

استخدام HTTP Authentication باسلوب CAS

كتبت من قبل تعريف Centralized Authentication Service تحدثت فيها عن فكرة  CAS وبماذا يفيد وبعض الامثلة لإستخدامة. حبيت اوضح اليوم مثال بسيط جداً من خلالة نفعل مبدأ CAS وبالتأكيد سوف يفتح لك مجالات اخرى لتنفيذ فكرة ما بأسلوب CAS.

قبل ان اطرح الفكرة دعوني اولاً اوضح فكرة HTTP Authentication. فكرتها تكمن في توفير حماية بسيطة على مجلدات ويب سيرفر مثلا المجلد example.com/myFiles تضع عليه مستخدم وكلمة سر لا يستطيع اي متصفح مشاهدة محتوى هذا المجلد قبل ادخال بيانات الدخول, اياً كانت هذه المحتويات قد تكون تطبيق ويب او لوحة تحكم التطبيق او حتى مجلد لا يحتوي إلا مجموعة من الملفات والمجلدات الفرعية ولا يحتوي اي صفحات ويب. بالتأكيد هذه الخاصية لا توفر حل لإستبدال الية المستخدمين والدخول للتطبيق نفسة الذي بداخل المجلد ان كان هناك تطبيق بالمجلد, انما هي مجرد طبقة حماية اضافية على المجلد الذي يحتوي تطبيق لإدارة شيء ما او ملفات هامة لا تريد لأي متصفح الإطلاع عليها.

كيف يستخدم HTTP Authentication بأسلوب CAS ؟ غالباً يقوم الويب ماستر بإستخدام يوزر واحد لكل مجلد يريد حمايته على سبيل المثال الموقع example.com ويحتوي على عدة مجلدات مثل data, images, files, documents ولكل مجلد له يوزر مختلف عن الاخر في عملية HTTP Authentication. الحل هنا ان يتم استخدام يوزر واحد لكل هذه المجلدات ويمكن ايضاً انشاء اكثر من يوزر وجميع هذه اليوزرات تستطيع ادخالك لأحد هذه المجلدات.

الفائدة من هذا انك تسهل عملية حفظ اليوزرات والباسوردات عن طريق استخدام ملف واحد فقط. مثلا لو كان لديك موقع يحتوي اكثر من لوحة تحكم ولديك مشرفين يدخلون هذه اللوحات, عند التحاق مشرف جديد بدل من ان تقوم بانشاء يوزر وباسورد جديد له على كل مجلد سوف تستطيع انشاء فقط يوزر واحد وسوف يفعل تلقائي على كل المجلدات التي تستخدم نفس ملف اليوزرات والباسوردات. نفس الامر في حالة اردت تعديل او حذف يوزر. طبعاً الحاجة لها تختلف من موقع لأخر.

للتوضيح اكثر. في Apache web server غالباً يستخدم الموديول mod_auth الذي يمكنك من انشاء ملف نصي تقوم بحفظ المستخدمين وكلمات السر الخاصة بهم بداخلة (يكون هذا الملف خارج مجلد الويب) ومن ثم تستدعي محتويات الملف هذا بداخل ملف host access ومستخدماً Directives الخاصة بموديول mod_auth. الان بدل من انشاء ملف لكل مجلد, تستطيع استخدام ملف واحد فقط تحفظ به اليوزرات والباسوردات وتقوم باستخدام هذا الملف نفسة لكل المجلدات التي تريد حمايتها.

ولكن ماذا ان كان لدي اكثر من موقع على نفس السيرفر وكل موقع يستخدم system user مختلف, كيف سوف تستطيع المواقع الاخرى على نفس السيرفر قرأة ملف اليوزرات ؟ الحل هنا ان تجعل الملف خارج مجلد اليوزر مثلا ان يكون في /etc وتستطيع وضع صلاحيات قرأة له لبعض مستخدمين النظام او فقط ان تجعلة Readable من كل مستخدمين النظام. وان كان لديك اكثر من موقع على عدة سيرفرات يمكنك ايضاً عمل مزامنة للملف على باقي السيرفرات باي طريقة تحب.

يمكن استخدام هذه الفكرة باكثر من موديول وليس فقط mod_auth لديك خيارات اخرى مثل mod_auth_dbm, mod_auth_ldap, mod_auth_degest. (بمختلف اصدارات Apache قد يختلف اسم الموديول او Syntax الخاصة به)

علماً ان كل هذه الطرق لا توفر حماية عند ادخال البيانات من العميل (المتصفح) وارسالها إلى السيرفر حيث انها ترسل بشكل نصوص واضحة. الحل لهذه المشكلة تمكين HTTPS على هذه المجلدات حتى لو استخدمت شهادة غير موقعة (ان كان الوصول لهذه المجلدات من اجل بضعة اشخاص فقط) المهم لديك ان ترسل وتستقبل البيانات مشفرة.

‎التعليقات‫:‬ 9 On استخدام HTTP Authentication باسلوب CAS