كيفية التعامل مع SSO الخاص بـ Discourse عندما يسمح موقع المصادقة للمستخدمين بتغيير عناوين البريد الإلكتروني؟

نستخدم تدفق SSO الخاص بـ Discourse الذي قمنا بتطبيقه بناءً على هذا الدليل: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

لقد نجح الأمر معنا بشكل جيد. لكننا نريد الآن السماح للمستخدمين في نظامنا بتغيير بريدهم الإلكتروني، ويبدو أن هذا يؤدي إلى مشاكل.

عندما أقوم بتغيير البريد الإلكتروني لمستخدمي في نظامنا، يتوقف عمل SSO مع Discourse.

خطأ في تسجيل الدخول

هناك مشكلة في حسابك. يرجى الاتصال بمدير الموقع.

أظن أن Discourse يستقبل حمولة (payload) تحتوي على بريد إلكتروني واسم مستخدم غير متطابقين ولا يعرف ماذا يفعل.

ما هي الطريقة الجيدة للتعامل مع هذا؟

أفضل فكرة توصلت إليها هي استخدام واجهة برمجة تطبيقات Discourse لتغيير بريد المستخدم الإلكتروني في Discourse ليتطابق مع بريده في نظامنا قبل بدء عملية SSO.

لكنني لا أعرف ما إذا كان ذلك ممكنًا. فيما يلي محاولتي الفاشلة.

إليك طلبي:

https://forum-stage.{domain}.com/users/{username}/preferences/email

Headers:
Content-Type: application/x-www-form-urlencoded
Accept: application/json

Body (as x-www-form-urlencoded in Postman):
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system

وهذه هي الاستجابة التي تلقيتها:

{
    "errors": [
        "You are not permitted to view the requested resource."
    ],
    "error_type": "invalid_access"
}

أنا أيضًا أواجه هذه المشكلة - هل عثرت على طريقة لتجاوزها؟

لا ينبغي أن يكون هذا هو الحال، حيث نعتمد بشكل أساسي على معرف الدخول الموحد (SSO).

يمكنك استخدام نقطة نهاية مزامنة الدخول الموحد لمزامنة عناوين البريد الإلكتروني على جانب Discourse إذا رغبت في القيام بذلك استباقيًا، لكن تغيير عناوين البريد الإلكتروني في نظامك يجب أن يعمل دائمًا.

الاستثناء الوحيد هو:

يعتقد Discourse أن معرف الدخول الموحد هو 5 والبريد الإلكتروني هو bob@jane.com

تتصل بك باستخدام معرف الدخول الموحد 6 والبريد الإلكتروني هو bob@jane.com

لا يمكن حل هذه المشكلة، لذا ستحتاج إلى التدخل يدويًا (قم بمزامنة معرف الدخول الموحد 6 أولاً).