مصادقة OAuth2: تنفيذ تسجيل الدخول الآمن باستخدام Authentik

قم بتنفيذ مصادقة OAuth2 مع Authentik كموفر الهوية الخاص بك. دليل كامل يغطي تدفقات OIDC وإدارة الرمز المميز ومعالجة الجلسة وأفضل ممارسات الأمان.

E

ECOSIRE Research and Development Team

فريق ECOSIRE

5 مارس 20265 دقائق قراءة1.0k كلمات

مصادقة OAuth2: تنفيذ تسجيل الدخول الآمن باستخدام Authentik

**المصادقة هي العنصر الأكثر أهمية للأمان في أي تطبيق ويب، ومع ذلك فإن 61% من خروقات البيانات تتضمن بيانات اعتماد مخترقة. ** يؤدي تنفيذ OAuth2 مع موفر هوية مخصص مثل Authentik إلى فصل مخاوف المصادقة عن منطق التطبيق، مما يتيح تسجيل الدخول الموحد والمصادقة متعددة العوامل (MFA) وإدارة المستخدم المركزية.

الوجبات الرئيسية

  • يعد تدفق كود تفويض OAuth2 مع PKCE هو النمط الموصى به لتطبيقات الويب
  • يوفر Authentik موفر هوية مستضاف ذاتيًا مع دعم OIDC وSAML وLDAP
  • تمنع ملفات تعريف الارتباط HttpOnly لتخزين الرمز المميز سرقة الرمز المميز المستند إلى XSS
  • رموز التبادل لمرة واحدة مع TTL القصيرة تمنع ظهور الرمز المميز في عناوين URL

نظرة عامة على تدفق OAuth2

تدفق رمز التفويض مع PKCE

  1. ** ينقر المستخدم على تسجيل الدخول **: يعيد التطبيق التوجيه إلى نقطة نهاية ترخيص Authentik
  2. مصادقة المستخدم: تم إدخال بيانات الاعتماد (وMFA) في صفحة تسجيل الدخول إلى Authentik
  3. تم إصدار رمز التفويض: يقوم Authentik بإعادة التوجيه مرة أخرى باستخدام رمز قصير العمر
  4. ** تبادل الرمز المميز **: رمز التبادل الخلفي للوصول وتحديث الرموز المميزة
  5. تم إنشاء الجلسة: الرموز المميزة المخزنة في ملفات تعريف الارتباط HttpOnly

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


إعداد المصادقة

تكوين الموفر

أنشئ موفر OAuth2/OIDC في Authentik بنوع عميل سري، ومعرف عميل فريد، وسر عميل قوي، ومعرفات URI لإعادة التوجيه الدقيقة، ونطاقات openid/profile/email، وعمر الرمز المميز المناسب (الوصول: 5-15 دقيقة، التحديث: 7-30 يومًا).

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

المصادقة متعددة العوامل

قم بتكوين خيارات MFA: TOTP (Google Authenticator وAuthy) وWebAuthn (مفاتيح أمان الأجهزة والقياسات الحيوية) ورموز الرسائل القصيرة/البريد الإلكتروني كبديل.


تنفيذ الواجهة الخلفية

إعادة توجيه التفويض

أعد توجيه المستخدمين إلى Authentik باستخدام معرف العميل، ونوع_الاستجابة=رمز، وإعادة توجيه_وري، والنطاقات، ومعلمة حالة عشوائية (حماية CSRF)، وتحدي رمز PKCE.

تبادل الرموز

عند رد الاتصال، قم بتبادل رمز التفويض من خادم إلى خادم مع Grant_type=authorization_code، والرمز المستلم، وredirect_uri، وبيانات اعتماد العميل، وPKCE code_verifier. تحتوي الاستجابة على معلومات الوصول إلى Access_token، وrefresh_token، وid_token، وانتهاء الصلاحية.

تخزين الرمز المميز الآمن

لا تقم أبدًا بتخزين الرموز المميزة في localStorage أو sessionStorage - يمكن الوصول إليها من خلال أي JavaScript بما في ذلك حمولات XSS. استخدم ملفات تعريف الارتباط HttpOnly مع العلامة الآمنة، SameSite=Lax، وانتهاء الصلاحية المناسب.


تكامل الواجهة الأمامية

تدفق تسجيل الدخول

ينقر المستخدم على تسجيل الدخول، وتعيد الواجهة الأمامية التوجيه إلى عنوان URL للتفويض، ويصادق المستخدم على Authentik (لا يرى تطبيقك بيانات الاعتماد أبدًا)، ويعيد Authentik التوجيه مرة أخرى باستخدام الرمز، ورمز التبادلات الخلفية، ويعين ملفات تعريف الارتباط HttpOnly، ونقطة نهاية جلسة مكالمات الواجهة الأمامية لبيانات المستخدم الحالية.

إدارة الجلسة

قم بإنشاء خطاف useAuth() الذي يستدعي GET /auth/session على التحميل. قم بإرجاع بيانات المستخدم إذا تمت مصادقتها، وأعد التوجيه لتسجيل الدخول إذا لم يكن الأمر كذلك. عند تسجيل الخروج، اتصل بـ POST /auth/logout لمسح ملفات تعريف الارتباط.

الطرق المحمية

استخدم البرامج الوسيطة لإعادة توجيه المستخدمين غير المصادقين قبل عرض الصفحة. في Next.js، يعالج الملف proxy.ts هذا عن طريق التحقق من ملفات تعريف الارتباط للمصادقة على المسارات المحمية.


أفضل الممارسات الأمنية

أمان الرمز المميز

  • ملفات تعريف الارتباط HttpOnly حصريًا - لا تعرض أبدًا الرموز المميزة لجافا سكريبت
  • عمر رمز الوصول القصير (5-15 دقيقة)
  • تحديث الرمز المميز بالتناوب (رمز تحديث جديد عند كل استخدام)
  • يتم تخزين سر العميل على الواجهة الخلفية فقط، وليس في كود الواجهة الأمامية

إعادة توجيه الأمن

  • التحقق من صحة جميع عناوين URL لإعادة التوجيه مقابل القائمة المسموح بها
  • رفض عمليات إعادة التوجيه التي تبدأ بـ // (عناوين URL المرتبطة بالبروتوكول)
  • لا تقم مطلقًا بتضمين الرموز المميزة في معلمات URL
  • استخدم رموز التبادل لمرة واحدة مع TTL لمدة 60 ثانية

أمان الجلسة

  • إعادة إنشاء معرفات الجلسة بعد المصادقة
  • تنفيذ مهلة الخمول (30 دقيقة) والمهلة المطلقة (8 ساعات)
  • تسجيل كافة أحداث المصادقة لمسارات التدقيق
  • محاولات تسجيل الدخول ذات الحد الأقصى للسعر لمنع القوة الغاشمة

ميزات Authentik المتقدمة

تسجيل المستخدم

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

تخصيص العلامة التجارية

قم بتطبيق CSS والشعارات والموضوعات المخصصة على صفحة تسجيل الدخول إلى Authentik للحصول على تجربة سلسة للعلامة التجارية. يجب تطبيق العلامة التجارية المخصصة من خلال عمليات تحميل وحدة تخزين CSS أو حقل Django ORMbranding_custom_css.

اتحاد المستخدمين

قم بتوصيل Authentik بأدلة المستخدم الخارجية عبر مزامنة LDAP/Active Directory، مما يتيح لمستخدمي المؤسسة الحاليين المصادقة دون إعادة إنشاء الحساب.


الأسئلة المتداولة

س: لماذا Authentik بدلاً من Auth0 أو Keycloak؟

Authentik مستضاف ذاتيًا (تحكم كامل في البيانات)، ومفتوح المصدر، وله واجهة مستخدم حديثة. Auth0 هو SaaS مع تسعير متصاعد لكل مستخدم. تتم استضافة Keycloak ذاتيًا ولكن لديها منحنى تعليمي أكثر حدة وواجهة مستخدم أقدم. يوازن Authentik بين الميزات وسهولة الاستخدام والتكلفة.

س: هل يستطيع Authentik التعامل مع آلاف المستخدمين؟

نعم. مبني على Django وPostgreSQL، يتعامل Authentik مع قواعد مستخدمين كبيرة. بالنسبة لأكثر من 100000 مستخدم، تأكد من وجود موارد كافية لقاعدة البيانات وفكر في التوسع الأفقي.

س: كيف يمكننا تنفيذ الدخول الموحّد (SSO) عبر تطبيقات متعددة؟

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

س: ماذا عن تسجيل الدخول عبر مواقع التواصل الاجتماعي؟

يدعم Authentik مصادر تسجيل الدخول الاجتماعية خارج الصندوق - Google وGitHub وMicrosoft وموفري OAuth2 الآخرين. يمكن للمستخدمين ربط حساباتهم الاجتماعية بهوية Authentik الخاصة بهم لتسجيل الدخول بسهولة.


ما هو التالي

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

اتصل بـ ECOSIRE للحصول على مساعدة في تنفيذ المصادقة، أو استكشف خدمات تنفيذ Odoo لنشر ERP الآمن.


تم النشر بواسطة ECOSIRE - مساعدة الشركات على التوسع باستخدام حلول برمجيات المؤسسات.

E

بقلم

ECOSIRE Research and Development Team

بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.

الدردشة على الواتساب