Oauth2-basic plugin و pkce

مرحبًا بالجميع،

أنا جديد على إضافة oauth2-basic، وبعد قراءة الوثائق والكود المصدري، لم أتمكن من العثور على إجابة لسؤالي.

  • هل تدعم إضافة oauth2-basic بروتوكول PKCE؟
  • إذا كان الأمر كذلك، كيف يمكنني تمكين ذلك؟
  • وإذا لم يكن كذلك، كيف يمكنني تعديل كود إضافة oauth2-basic لاستخدام PKCE؟

تنص صفحة README الخاصة بـ omniauth على GitHub (GitHub - omniauth/omniauth-oauth2: An abstract OAuth2 strategy for OmniAuth. · GitHub) على أنه يجب أن أتمكن من تعيين خيار pkce إلى true في استراتيجية omniauth الخاصة بي. ومع ذلك، لقد حاولت إجراء هذا التعديل في كود إضافة oauth2-basic، ولكن لا يتم إرسال أي تحدي للرمز (code challenge) إلى عنوان URL للتفويض (authorize_url). هل لديكم أي اقتراحات؟

شكرًا مقدّمًا

رفع هذا الموضوع حيث أن مجتمعًا أساعده يطلب دعمًا لـ PKCE.

قبل أن يُسأل عنه، لم أرَ شيئًا عن هذا الأمر بعد، ولكن بالنظر إلى التوثيق الخاص به يبدو أن الدافع الرئيسي لذلك هو التطبيقات الأصلية وتطبيقات الصفحة الواحدة (SPAs):

التطبيقات الأصلية

  • لا يمكنها تخزين سر العميل (Client Secret) بشكل آمن. سيؤدي فك تجميع التطبيق إلى كشف سر العميل، والذي يرتبط بالتطبيق وهو نفسه لجميع المستخدمين والأجهزة.
  • قد تستفيد من مخطط عنوان URL مخصص لالتقاط عمليات إعادة التوجيه (على سبيل المثال، MyApp://) مما قد يسمح للتطبيقات الضارة بتلقي رمز التفويض (Authorization Code) من خادم التفويض الخاص بك.

تطبيقات الصفحة الواحدة

  • لا يمكنها تخزين سر العميل (Client Secret) بشكل آمن لأن مصدرها بالكامل متاح للمتصفح.

لا ينطبق أي من هذين الأمرين على هذا الموقف؛ خادم Discourse هو الذي يحتفظ بالسر.

Animated GIF