مواصلة النقاش من إضافة SAML في المستودع. متعدد المواقع:
أحاول استخدام الكود التالي في إضافة SAML لإنشاء حساب تلقائيًا بعد مصادقة المستخدم بنجاح، بحيث لا يُعرض على المستخدمين نافذة تسجيل الدخول التي قد يُغيرون فيها بريدهم الإلكتروني أو اسم المستخدم أو اسمهم. أفضل أن لا يكون للمستخدمين سيطرة على هذه الإعدادات، بل يتم تعيينها تلقائيًا بناءً على مصادقة SAML.
يحتوي ملف app.yml الخاص بي على:
...
# فرض سمة fullName من تأكيد SAML لتجاوز سمة name بحيث
# يتم تعيين الاسم الكامل للمستخدم إلى حقل الاسم في Discourse، مما يساعد
# على تعزيز حقل اسم المستخدم الرقمي في المنشورات.
DISCOURSE_SAML_ATTRIBUTE_STATEMENTS: "name:fullName"
DISCOURSE_SAML_AUTO_CREATE_ACCOUNT: true
...
عند اختبار هذه الميزة، أرى الخطأ التالي في السجلات:
Completed 500 Internal Server Error in 175ms (ActiveRecord: 0.0ms)
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "uid" violates not-null constraint
DETAIL: Failing row contains (2, 3, null, saml, user@company.com, Smith, John, 2019-06-03 21:40:55.44066, 2019-06-03 21:40:55.44066).
: INSERT INTO "oauth2_user_infos" ("user_id", "provider", "email", "name", "created_at", "updated_at") VALUES (3, 'saml', 'user@company.com', 'Smith, John', '2019-06-03 21:40:55.440660', '2019-06-03 21:40:55.440660') RETURNING "id")
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:69:in `async_exec_params'
Failed to handle exception in exception app middleware : PG::NotNullViolation: ERROR: null value in column "uid" violates not-null constraint
DETAIL: Failing row contains (2, 3, null, saml, user@company.com, Smith, John, 2019-06-03 21:40:55.44066, 2019-06-03 21:40:55.44066).
: INSERT INTO "oauth2_user_infos" ("user_id", "provider", "email", "name", "created_at", "updated_at") VALUES (3, 'saml','user@company.com', 'Smith, John', '2019-06-03 21:40:55.440660', '2019-06-03 21:40:55.440660') RETURNING "id"
هل لديك أي فكرة عما إذا كنت بحاجة إلى تكوين الإضافة لفرض تعيين “uid” عبر إحدى السمات من تأكيد SAML؟
عندما يكون DISCOURSE_SAML_AUTO_CREATE_ACCOUNT مضبوطًا على false أو غير موجود، تعمل المصادقة القائمة على SAML، لكن المستخدم يرى النافذة التي يمكنه من خلالها تعديل بريده الإلكتروني واسم المستخدم واسمه.
