كل التطبيقات تحتاج للتعامل مع بيانات المستخدمين وادارتها Identity Management وقد تبدوا العملية من الوهلة الأولى بسيطة، ولا يتم مناقشتها كثيراً في أغلب المشاريع، كونها ليست جزءاً أساسياً من متطلبات المشروع، وانما فقط وسيلة للدخول والحماية.
لكن بالرغم من ذلك فال Identity Management يعتبر من أكثر الأجزاء تعقيداً في المشاريع، وكثير من الاختراقات التي نشاهدها ونسمع بها وسرقة الحسابات ناتجة عن سوء تطبيق لإدارة الحسابات، ومن هنا نحتاج ان نعرف كيف نخطط وننفذ هذه الجزئية في المشاريع.
التحديات في ادارة الهوية Identity Challenges
قد تبدوا عملية إدارة الهوية بسيطة نظرياً، لكن في الواقع فهي غير كذلك، وتحتاج التخطيط الجيد، والتصميم والتنفيذ مع موازنة بين المتطلبات في المشروع مع الحماية وفي نفس الوقت المحافظة على تجربة المستخدم User Exprience.
ومن هنا تظهر أهمية دراسة موضوع ال Identity Management بحيث نستطيع ان نتماشى مع متطلبات المشروع Business Requirements فلا يوجد حل واحد لكل المتطلبات وسيتم ذكر بعض أنواع المشاريع والطرق التي تناسبهم.
مشروع موجه للمستخدمين Consumer-Facing Application
في هذه الحالة قد تحتاج الى ان يقوم المستخدمين بالدخول بواسطة الشبكات الاجتماعية Social Providers، وايضاً قد يتطلب ربط أكثر من حساب بنفس الهوية، بحيث يستطيع المستخدم الدخول لحسابه من خلال ال Facebook وال Twitter وغيرها بسهولة. وإذا لم تستطيع تنفيذ هذه المتطلبات في هذا النوع من التطبيقات فقد يواجه المستخدمين مشاكل في الدخول والتسجيل ويزعجهم وقد يتسبب في عدم استخدامهم للخدمة.
مشروع داخلي في شركة Internal System
في المشاريع الداخلية بفضل أن يقوم الموظفين بالدخول من خلال حسابهم في العمل (مثلاً Active Directory Account) ويريدوا تجربة سهلة للدخول Single Sign-On. وقد يكون للشركة متطلبات معقدة في ال Authorization بناء على ال Roles والتي تعطي الصلاحيات للموظفين للقيام بالمهام المطلوبة.
مشروع ببيانات حساسة
قد يحتاج طريقة للدخول اقوى من مجرد كلمة السر Stronger Authentication، وتكون في نفس اللحظة مناسبة لمستخدمي ذلك النظام. وهناك العديد من الخيارات لتطبيق ال Strong Authentication تبدأ من كلمة السر المؤقتة One Time Password يتم توليدها في تطبيق معين مثلاً Authenicator Application أو ترسل كتنبيه لتطبيق معين مخصص لها، الى استخدام أجهزة مخصصة Hardware Token تحتوي على مفاتيح التشفير. لذلك قد تحتاج الى حلول سهلة للمستخدمين لكي يتأقلموا معها بدلاً من ان تكون مانعاً لهم لاستخدام النظام.
أكثر من مشروع للعديد من المستخدمين
اذا كنت تقدم أكثر من مشروع لفئة من المستخدمين، فالمستخدمين قد يرغبوا بخاصية الدخول الموحد Single Sign-On بحيث يدخلوا مرة واحدة ويستطيعوا الوصول لكل من تلك التطبيقات (مثلاً عند دخولك ل Gmail سوف تدخل مباشرة على Youtube وغيرها من خدمات قوقل). وهذا ما يجعل عملية الدخول سهلة للمستخدمين فهي بوابة واحدة للدخول، ولكن في نفس الوقت تحتاج أن تتأكد من أنها تعمل دائماً Highly Available ولها قدرة على التوسع الذاتي Scaling Up في حال زاد الضغط عليها، والا فسوف تكون هذه البوابة للدخول هي السبب لعدم دخول المستخدمين للنظام.
قيود أخرى يجب وضعها في الإعتبار
يجب أن يستوعب تصميم المشروع للقيود الموجودة في البيئة التي يعمل بها Delivery Platform، مثلاً في الويب فيتوقع المستخدم ان تقوم بنقله Redirect الى صفحة الدخول Sign-In، بينما في برامج سطح المكتب فقد يفضل المستخدم الدخول مباشرة من التطبيق أو استخدام ال Session في نظام التشغيل. في تطبيقات الموبايل فهناك عدة طرق، منها ما يقوم بعمل Redirect المستخدم الى ال Identity Provider لكي يقوم بالدخول، ومنها ما يطلب بيانات الدخول Credentials مباشرة في التطبيق، ولذلك يجب ان تقوم بالموازنة بين هذه الطرق المختلفة وإيجاد الطريقة الأنسب بحسب نوعية المشروع او النظام والبيئة التي سوف يعمل بها.
سوف تجد أنك بحاجة الى الإجابة على كل هذه الأسئلة وفي نفس الوقت تقوم بأخذ في الحسبان بمراعاة الأمن وتلبية رغبات ومتطلبات المشروع Business Requirements (هل تهتم لحماية التطبيق قبل أو بعد الانتهاء من البرمجة؟)
وإذا لم تقوم بأخذ القرارات الأنسب فهذا قد يؤثر على تجربة المستخدم لديك، مثلاً قمت بتنزيل تطبيق لمشاهدة صور من الطبيعة او الحيوانات، وفي صفحة التسجيل قام بسؤالك عن رفع صفحة من الجواز Passport ورفع فيديو يحدد ملامحك Selfie Video. فهذا أمر مثير للشك والريبة، فلماذا يحتاج مثل هذا التطبيق صورة من الجواز الشخصي. ولذلك سوف يؤثر هذا القرار على استخدام التطبيق، وقد يكون من الأفضل الدخول بواسطة الشبكات الاجتماعية.
وفي المقابل قد يطلب نظام او تطبيق مالي صورة من الجواز لكي يتحقق من الهوية الخاصة بك وهذا يبدوا معقولاً، لأنه قد يكون جزءاً من السياسة الخاص بها، وهذا الأمر فعلياً مطبق في أحد الأنظمة البنكية Monzo كجزء من التسجيل On Boarding Experience (رفع فيديو سيلفي وقراءة بعض النصوص).
من النقاط الأخرى التي يجب وضعها في الاعتبار هي الخصوصية والتعامل مع البيانات الحساسة وحمايتها، وهناك الكثير من التشريعات مثل GDRP (اختصاراً General Data Privacy Regulation) في الاتحاد الأوربي وغيرها من التشريعات المختلفة. فأي مشروع يقوم بأخذ بيانات المستخدمين ومعالجتها فيجب أن تتوافق مع هذه التشريعات والا فسوف تتعرض لعقوبات وغرامات مالية. ولذلك التحديات أعلاه ما هي الا عينة بسيطة من التحديات التي تواجهك عند تصميم وبناء Identity Management لأنظمتك.
أسئلة مهمة
قبل أن تبدأ في تنفيذ المشروع، تحتاج للإجابة على هذه الأسئلة وتكون لديك إجابة واضحة بها:
- من هم المستخدمين لديك؟ موظفين Employees، مستخدمين عاديين Consumers؟
- كيف سيقوم المستخدمين بالدخول؟ هل سيتم استخدام حسابات موجودة ويقوموا باستخدامها
- هل يمكن ان يستخدم التطبيق بدون هوية Anonymously او يحتاج للتحقق منها Authentication
- ما هي بيئة العمل Delivery Platform هل هو موقع ويب او تطبيق موبايل التي سيعمل بها مشروعك
- هل سيحتاج ان ينادي أي APIs؟ إذا كان كذلك فمن يملك البيانات التي سوف يستدعيها تطبيقك
- ما هي مدى حساسية البيانات التي يتعامل بها نظامك؟
- ما هي متطلبات الدخول Access Control المطلوبة في المشروع؟
- كم هي فترة الجلسة للمستخدم Session Time
- هل هناك أكثر من نظام أو تطبيق في مشروعك؟ إذا كان كذلك فهل سيتم تطبيق Single Sign-On؟
- ماذا يحدث عندما يقوم المستخدمين بالخروج Log out؟
- هل هناك تشريعات ومتطلبات يجب الإيفاء بها؟
خلاصة
عند تطوير ال Identity Management للتطبيقات والمواقع فيجب معرفة العديد من الأمور الهامة، حتى يتم تصميم نظام يلبي رغبات المستخدمين، حيث يتوقعوا تجربة استخدام مميزة عند استخدام النظام، وال Identity Management يفترض ان يساعدهم للدخول للنظام بسرعة.
- تفرض ال Identity Management العديد من التحديات للمطورين عند تطوير التطبيقات الحديثة
- يجب ان تكون ال Identity Management مناسبة لحماية البيانات، وتوفر تجربة استخدام مميزة، وتعمل في البيئة التي يعمل بها التطبيق أو النظام.