لا أعرف ما يكفي عن المكدس الخاص بك أو حالة الاستخدام، ولكن أعتقد أنني قمت بحل مشكلة مماثلة من قبل، وقد تكون بعض الأفكار مفيدة لك.
لدي تطبيق Next.js حيث أحتاج إلى جانب العميل للحصول على JWT صالح لإجراء مكالمات إلى واجهة برمجة تطبيقات الواجهة الخلفية الخاصة بي إذا كانت هناك جلسة Discourse.
لهذا الغرض، أستخدم Discourse كموفر الهوية الخاص بي من خلال DiscourseConnect.
في حالتي، أقوم بذلك باستخدام استدعاء fetch واحد من جانب العميل مع { credentials: "include" }، والذي يعمل فقط لأن لدي كل شيء معدًا بنطاق واحد ويتبع استدعاء fetch عمليات إعادة التوجيه بشفافية.
يقوم العميل الخاص بي بجلب /auth/token مخصص، والذي يتحقق من وجود _t (فقط لتجنب إعادة توجيه غير مجدية بخلاف ذلك) ويعيد توجيهًا إلى عنوان URL آمن /session/sso_provider تم بناؤه باتباع المستندات في الموضوع المرتبط، مع nonce/sso/sig، و return_sso_url يشير إلى /auth/callback مخصص، والذي سيستخرج البيانات التي أرسلها Discourse، ويبني ويعيد رمز JWT الذي يمكن لعميلي استخدامه من هذه اللحظة فصاعدًا.
أعتقد أنه يمكن حل حالة الاستخدام الخاصة بك بطريقة مماثلة.