إدارة قواعد بيانات المستخدمين الكبيرة لتسجيل الدخول الأحادي

StackOverflow https://stackoverflow.com/questions/78217

سؤال

كيف يمكنك تنفيذ نظام له الأهداف التالية:

  • إدارة المصادقة ، تفويض لمئات الآلاف ل المستخدمين الحاليين متكامل حاليًا بشكل وثيق مع تطبيق بائع تابع لجهة خارجية (نريد أن ندفع هؤلاء المستخدمين إلى شيء نديره ونجعل تطبيقاتنا تعمل ضده، بالإضافة إلى أن موردينا الخارجيين يعملون ضده).
  • إدارة معلومات الملف الشخصي المرتبطة بهؤلاء المستخدمين
  • يجب أن تكون قادرًا على الوصول إليها من أي عدد من تطبيقات الويب على أي نظام أساسي (Windows، *nix، PHP، ASP/C#، Python/Django، وما إلى ذلك).

هنا بعض تطبيقات العينة:

  • خادم LDAP/AD لإدارة كل شيء.استخدم المخطط المخصص لجميع بيانات الملف الشخصي.يمكن مصادقة كل شيء مقابل LDAP/AD ويمكننا تخزين جميع أنواع قوائم ACL وبيانات الملف الشخصي في مخطط مخصص.
  • استخدم LDAP/AD للمصادقة فقط، واربط مستخدمي LDAP بخادم ملف تعريف/تخويل أقوى باستخدام نوع ما من قواعد البيانات التقليدية (MSSQL/PostgreSQL/MySQL) أو قاعدة بيانات مستندة إلى المستندات (CouchDB، وSimpleDB، وما إلى ذلك).استخدم LDAP للحصول على الترخيص، ثم اضغط على قاعدة البيانات لمزيد من الأشياء المتقدمة.
  • استخدم قاعدة بيانات تقليدية (علائقية أو مستندية) لكل شيء.

هل أي من هؤلاء الثلاثة هو الأفضل؟هل هناك حلول أخرى تناسب الأهداف المذكورة أعلاه وتكون أسهل في التنفيذ؟

** يجب أن أضيف أن جميع التطبيقات تقريبًا التي ستتم مصادقتها وفقًا لقاعدة بيانات المستخدم ستكون تحت سيطرتنا.ستكون التطبيقات الخارجية القليلة الوحيدة هي التطبيقات التي نزيل منها قاعدة بيانات المستخدم الحالية وربما تطبيقًا أو تطبيقين آخرين.لا يوجد شيء واسع النطاق بحيث تحتاج إلى خادم openID.

من المهم أيضًا معرفة أن الكثير من هؤلاء المستخدمين لديهم هذه الحسابات لمدة 5-8 سنوات ويعرفون معلومات تسجيل الدخول وكلمات المرور الخاصة بهم، وما إلى ذلك.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

إذا كان لديك بنية أساسية موجودة لـ ActiveDirectory، فسيكون هذا هو الحل الأمثل.سيكون هذا مفيدًا بشكل خاص للشركات التي قامت بالفعل بإعداد خوادم Windows للمصادقة.إذا كان هذا هو الحال، فأنا أميل نحو النقطة الأولى في "نماذج التنفيذ".

وإلا فسيكون الأمر بمثابة إهمال بين خيارات AD وخيارات LDAP مفتوحة المصدر.

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

حظ سعيد!

استخدم LDAP/AD للمصادقة فقط، واربط مستخدمي LDAP بخادم ملف تعريف/تخويل أقوى باستخدام نوع ما من قواعد البيانات التقليدية (MSSQL/PostgreSQL/MySQL) أو قاعدة بيانات مستندة إلى المستندات (CouchDB، وSimpleDB، وما إلى ذلك).استخدم LDAP للحصول على الترخيص، ثم اضغط على قاعدة البيانات لمزيد من الأشياء المتقدمة.

لدينا مواقع مختلفة بها حوالي 100 ألف مستخدم وجميعهم يعملون مع قواعد بيانات عادية.إذا كان بإمكان معظم التطبيقات الوصول إلى قاعدة البيانات، فيمكنك استخدام هذا الحل.

يمكنك دائما تنفيذ بنفسك معرف مفتوح الخادم.هناك بالفعل أ مكتبة بايثون لـ OpenID لذلك يجب أن يكون الأمر سهلاً إلى حد ما.

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

يحرر: لقد وجدت تنفيذ بروتوكول خادم OpenID في جانغو.

تحرير 2: هناك ميزة واضحة في تنفيذ OpenID لمستخدميك.سيكونون قادرين على تسجيل الدخول إلى StackOverflow باستخدام معلومات تسجيل الدخول الخاصة بهم :-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top