SSO

كيفية إعداد الدخول الموحَّد (SSO) عبر SAML2.

SSO

يتوفّر الدخول الموحَّد (عبر SAML2) في OpenReplay Enterprise Edition فقط.

إعداد مزوّد الهوية (IDP)

Section titled إعداد مزوّد الهوية (IDP)

في لوحة تحكم مزوّد الهوية الخاص بك، أنشئ تطبيقًا جديدًا باسم openreplay (يمكنك استخدام هذه الأيقونة). في صفحة الإعداد، تأكّد من ضبط القيم التالية (يُرجى التأكّد من استبدال YOUR_DOMAIN:PORT بالقيمة الصحيحة، مثال https://openreplay.mycompany.com:443، وبالنسبة لـ PORT يُرجى استخدام 443 إذا كنت تستخدم https، و8080 إذا كنت تستخدم http، أو استخدم رقم المنفذ المخصّص الخاص بك):

المتغيّرالقيمة
ACS URL (وتُسمّى أيضًا Single Sign On URL أو Consumer URL)YOUR_DOMAIN:PORT/api/sso/saml2/acs/
Entity ID (وتُسمّى أيضًا Audience)YOUR_DOMAIN:PORT/api/sso/saml2/metadata/
Single Logout URL (وتُسمّى أيضًا SLO URL)YOUR_DOMAIN:PORT/api/sso/saml2/sls/ (اختياري)
Name ID (يكون أحيانًا قابلًا للضبط في قسم ‘Attribute Statements’ أو ‘Parameters’)Email أو EmailAddress أو urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress، بحسب مزوّد الهوية الخاص بك
مُبادِر SAMLاضبطه على Service Provider (اختياري)

في قسم ‘Attribute Statements’ أو قسم ‘Parameters’، يُرجى التأكّد من تعريف الحقول التالية:

الحقلالقيمة
tenantKeyTENANT_KEY يمكن العثور على قيمته في لوحة التحكم، ضمن ‘Preferences’ > ‘Account’
firstNameuser.firstName
lastNameuser.lastName
internalIdالمعرّف الداخلي أو user.email (معرّف المستخدم في نظام إدارة الهوية الخاص بك) (اختياري)
roleدور المستخدم؛ بحسب مزوّد الهوية الخاص بك قد يكون user.role أو group، إلخ. (اختياري، القيمة الافتراضية = member)
adminPrivilegesما إذا كان المستخدم يملك صلاحيات المسؤول أم لا؛ إذا احتوى هذا الحقل على أي قيمة مختلفة عن false، فسيُعتبر true. (اختياري، القيمة الافتراضية = false)

ينبغي أن تكون لديك الآن جميع القيم المطلوبة للخطوة/القسم التالي.

لتفعيل SSO، شغّل openreplay -e ثم أزِل التعليق وحدِّث متغيرات البيئة أدناه في قسم chalice:

المتغيّرالوصف
idp_entityIdقيمة entityId لمزوّد الهوية الخاص بك، ويُشار إليها أيضًا بـ Issuer URL
idp_sso_urlقيمة singleSignOnService لمزوّد الهوية الخاص بك، ويُشار إليها أيضًا بـ SAML 2.0 Endpoint (HTTP)
idp_x509certقيمة x509cert، ويجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر. يمكنك استخدام هذه الأداة لتنسيق قيمتك
idp_nameاسم مزوّد الهوية (اختياري)
idp_sls_urlقيمة singleLogoutService لمزوّد الهوية الخاص بك، ويُشار إليها أيضًا بـ SLO Endpoint (HTTP) (اختياري)
enforce_SSOإذا ضُبط على true، فسيتم حظر جميع عمليات الاتصال باستخدام اسم المستخدم وكلمة المرور (اختياري، القيمة الافتراضية=false)

ثم احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ:

هذا اختياري؛ يمكنك إضافة شهادة x509 لمزيد من الأمان في SSO:

  1. شغّل هذا الأمر على خادمك أو على جهازك الآمن (يمكنك تغيير مدة صلاحية شهادتك وفقًا لاحتياجاتك):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout openreplay-sso.key -out openreplay-sso.crt
  1. على خادمك، شغّل openreplay -e
  2. ضمن قسم chalice، أضِف متغيرات البيئة التالية:
  • sp_crt: يجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر، من ملف ‘openreplay-sso.crt’ المُولَّد (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
  • sp_key: يجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر، من ملف ‘openreplay-sso.key’ المُولَّد
  1. احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ
  2. أضِف ملف ‘openreplay-sso.crt’ المُولَّد إلى إعداد تطبيق مزوّد الهوية الخاص بك

مثال باستخدام Okta

Section titled مثال باستخدام Okta
  1. سجّل الدخول إلى لوحة تحكم إدارة Okta وانتقل إلى ‘Applications’ > ‘Applications’
  2. اضغط ‘Create new app integration’، ثم اختر SAML 2.0 واضغط ‘Next’
  3. اضبط ‘App Name’ على OpenReplay (يمكنك رفع هذه الأيقونة) لتطبيقك) ثم اضغط ‘Next’
  4. اضبط:
  • Single sign on URL على YOUR_DOMAIN:PORT/api/sso/saml2/acs/
  • Audience URI (SP Entity ID) على YOUR_DOMAIN:PORT/api/sso/saml2/metadata/
  • Name ID format على EmailAddress
  1. عرّف الحقول أدناه في ‘Attribute Statements’:
  • tenantKey: التنسيق Basic واضبط القيمة على TENANT_KEY، وتوجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’
  • firstName: التنسيق Basic واضبط القيمة على user.firstName
  • lastName: التنسيق Basic واضبط القيمة على user.lastName
  • internalId: التنسيق Basic واضبط القيمة على user.email
  1. عرّف الحقل أدناه في ‘Group Attribute Statements’:
  • role: التنسيق Basic، المرشّح Match Regex، القيمة .* (أو يمكنك تحديد مرشّح وتعبير منتظم مختلفين وفقًا لاحتياجاتك)
  • adminPrivileges: التنسيق Basic، المرشّح Match Regex، القيمة admin (سيحصل المستخدم الحالي على admin privileges إذا كان ضمن مجموعة admin)
  1. اضغط Next، اختر ‘I’m an Okta customer adding an internal app’ و’This is an internal app that we have created’ ثم اضغط ‘Finish’
  2. في علامة التبويب Sign On، مرِّر للأسفل واضغط ‘View Setup Instructions’ لرؤية إعداد SAML2 الخاص بك
  3. على خادمك، شغّل openreplay -e
  4. ضمن قسم chalice، أزِل التعليق ثم اضبط متغيرات البيئة التالية:
  • idp_entityId: Identity Provider Issuer
  • idp_sso_url: Identity Provider Single Sign-On URL
  • idp_x509cert: X.509 Certificate، يجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
  • idp_name: Okta
  1. أخيرًا، احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ.

مثال باستخدام Azure Active Directory

Section titled مثال باستخدام Azure Active Directory
  1. سجّل الدخول إلى بوابة Azure الخاصة بك وانتقل إلى ‘Azure Active Directory’
  2. اضغط ’+ Add’، اختر ‘Enterprise application’ ثم انقر ‘Create your own application’
  3. اضبط ‘App Name’ على OpenReplay ثم اختر ‘Integrate any other application you don’t find in the gallery (Non-gallery)’ واضغط ‘Create’
  4. انتقل إلى ‘Single sign-on’ في القائمة الجانبية اليسرى واضبط القيم أدناه في كتلة ‘Basic SAML Configuration’:
  • Identifier (Entity ID) على YOUR_DOMAIN:PORT/api/sso/saml2/metadata/
  • Reply URL (Assertion Consumer Service URL) على YOUR_DOMAIN:PORT/api/sso/saml2/acs/
  • Logout URL على YOUR_DOMAIN:PORT/api/sso/saml2/sls/
  1. أضِف المطالبات (claims) أدناه في كتلة ‘Attribute & Claims’ وتأكّد من ترك حقل ‘Namespace’ فارغًا لكلٍّ منها:
  • tenantKey: اضبط القيمة على TENANT_KEY، وتوجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’
  • firstName: اضبط القيمة على user.givenname
  • lastName: اضبط القيمة على user.surname
  • internalId: اضبط القيمة على user.mail
  1. انتقل إلى ‘Users and groups’ وعيّن المستخدمين الذين تختارهم للتطبيق
  2. الآن اتّصل عبر SSH بتثبيت OpenReplay الخاص بك وشغّل openreplay -e
  3. ضمن قسم chalice، أزِل التعليق ثم اضبط متغيرات البيئة التالية (توجد القيم في ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’):
    • idp_entityId: Azure AD Identifier
    • idp_sso_url: Login URL
    • idp_sls_url: Logout URL
    • idp_x509cert: X.509 Certificate، يجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
    • idp_name: Active Directory
  4. أخيرًا، احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ

مثال باستخدام Google Workspace (المعروف سابقًا بـ G Suite)

Section titled مثال باستخدام Google Workspace (المعروف سابقًا بـ G Suite)

إضافة سمات مخصّصة:

Section titled إضافة سمات مخصّصة:
  1. في وحدة تحكم إدارة Google، انتقل إلى ‘Directory’ > ‘Users’ > ‘More options’ > ‘Manage custom attributes’.
  2. انقر ‘Add Custom Attribute’.
  3. اضبط الحقول التالية:
  • Category: ‘OpenReplay’
  • Custom fields:
  • Name: ‘role’
  • Info type: ‘Text’
  • Visibility: ‘Visible to user and admin’
  • No. of values: ‘Single-value’
  • Custom fields:
  • Name: ‘adminPrivileges’
  • Info type: ‘Yes or No’
  • Visibility: ‘Visible to user and admin’
  • No. of values: ‘Single-value’
  1. انقر ‘Add’
  2. لإضافة قيم إلى السمات المخصّصة الجديدة، انتقل إلى ‘Users’
  3. حدِّد المستخدم (المستخدمين) المطلوب
  4. انقر ‘User information’ ثم عدّل قسم ‘OpenReplay’
  5. غيّر قيمة role إلى الدور المطلوب في ‘OpenReplay’ (يجب أن يطابق الدور ذلك الذي أُنشئ في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Roles’)
  6. غيّر قيمة adminPrivileges إلى ‘Yes’ إذا كان مسموحًا للمستخدم بامتلاك صلاحيات المسؤول في OpenReplay
  7. انقر ‘Save’
  1. سجّل الدخول إلى وحدة تحكم إدارة Google وانتقل إلى ‘Apps’
  2. اضغط ‘Web and mobile apps’ ثم انقر ‘Add app’ > ‘Add custom SAML app’
  3. اضبط ‘App name’ على OpenReplay (يمكنك رفع هذه الأيقونة لـ ‘App icon”) ثم اضغط ‘Continue’
  4. انسخ ‘SSO URL’ و’Entity ID’ و’Certificate’ ثم انقر ‘Continue’ (سنستخدم هذه القيم في الخطوة 11)
  5. اضبط:
  • ACS URL على YOUR_DOMAIN:PORT/api/sso/saml2/acs/TENANT_KEY/ (TENANT_KEY توجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’)
  • Entity ID على YOUR_DOMAIN:PORT/api/sso/saml2/metadata/
  • Name ID format على Email
  • Name ID على Basic information > Primary Email
  1. انقر ‘Continue’ ثم اضغط ‘Add Mapping’ لإضافة السمات أدناه:
  • Basic information > First Name -> firstName
  • Basic information > Last Name -> lastName
  • Basic information > Primary Email -> internalId
  • OpenReplay > role -> role
  • OpenReplay > adminPrivileges -> adminPrivileges
  1. انقر ‘Finish’
  2. في وحدة تحكم إدارة Google، انتقل إلى ‘Apps’ > ‘Web and mobile apps’ واختر ‘OpenReplay’
  3. انقر ‘User access’، اختر ‘ON for everyone’ ثم اضغط ‘Save’
  4. على خادمك، شغّل openreplay -e
  5. ضمن قسم chalice > env، أزِل التعليق واضبط السمات التالية باستخدام القيم من الخطوة 4:
  • idp_sso_url: الصق قيمة ‘SSO URL’
  • idp_entityId: الصق قيمة ‘Entity ID’
  • idp_x509cert: استخدم هذه الأداة لتنسيق الشهادة المنسوخة/المُنزَّلة
  • idp_name: اضبط القيمة على G-Suite
  • idp_tenantKey: TENANT_KEY توجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’
  1. أخيرًا، احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ.

مثال باستخدام JumpCloud

Section titled مثال باستخدام JumpCloud
  1. سجّل الدخول إلى لوحة تحكم إدارة JumpCloud، وفي القائمة اليسرى انتقل إلى ‘SSO’
  2. اضغط ’+ Add New Application’، ثم اختر ‘Custom SAML App’
  3. اضبط ‘Display Label’ على OpenReplay (يمكنك رفع هذه الأيقونة لتطبيقك) ثم انتقل إلى علامة التبويب ‘SSO’
  4. اضبط:
  • IdP Entity ID على openreplay/TENANT_KEY
  • SP Entity ID على YOUR_DOMAIN:PORT/api/sso/saml2/metadata/
  • ACS URL على YOUR_DOMAIN:PORT/api/sso/saml2/acs/
  • SAMLSubject NameID على email
  • SAMLSubject NameID Format: على urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
  • Signature Algorithm على RSA-SHA256
  • ضع علامة على Sign Assertion
  • IDP URL بحيث ينتهي بـ openreplay-TENANT_KEY (لا يمكن تغيير هذه القيمة لاحقًا)
  1. إذا اتّبعت تعليمات شهادة OpenReplay، يمكنك رفع ملف ‘openreplay-sso.crt’ المُولَّد بالضغط على ‘Upload SP Certificate’، وإلا فتجاهل هذه الخطوة
  2. عرّف الحقول أدناه في ‘USER ATTRIBUTE MAPPING’ بالضغط على زر ‘add attribute’:
  • firstName: اضبط القيمة على firstname
  • lastName: اضبط القيمة على lastname
  • internalId: اضبط القيمة على email
  • role: اختياري، دور المستخدم في OpenReplay، إذا كانت قيمته ثابتة لجميع المستخدمين، فينبغي أن تعرّفه في الخطوة التالية، وإلا فعليك إضافة سمة نصية جديدة إلى مجموعة JumpCloud، تسمّيها OpenReplayRole وتضبط القيمة على اسم الدور، ثم في إعداد SSO، اختر ‘Custom User or Group Attribute’ واضبط القيمة على OpenReplayRole.
  • adminPrivileges: اختياري، إذا كانت قيمته ثابتة لجميع المستخدمين، فينبغي أن تعرّفه في الخطوة التالية، وإلا فعليك إضافة سمة منطقية (boolean) جديدة إلى مجموعة JumpCloud، تسمّيها OpenReplayAdminPrivileges وتضبط القيمة على اسم الدور، ثم في إعداد SSO، اختر ‘Custom User or Group Attribute’ واضبط القيمة على OpenReplayAdminPrivileges.
  1. عرّف الحقول أدناه في ‘CONSTANT ATTRIBUTES’ بالضغط على زر ‘add attribute’:
  • tenantKey: اضبط القيمة على TENANT_KEY، وتوجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’
  • role: اختياري، تجاهله إذا كان معرّفًا في الخطوة السابقة، دور المستخدم في OpenReplay، ينبغي أن يطابق اسم دور معرّف مسبقًا في OpenReplay (القيمة الافتراضية = member)
  • adminPrivileges: اختياري، تجاهله إذا كان معرّفًا في الخطوة السابقة، اضبط القيمة على true إذا أردت منح المستخدمين الجدد صلاحية المسؤول، وfalse إن لم ترغب في ذلك (القيمة الافتراضية = false)
  1. في هذه المرحلة، يمكنك الانتقال إلى علامة التبويب ‘User Groups’، واختيار مجموعة المستخدمين الذين سيكون لديهم وصول إلى OpenReplay، أو يمكنك القيام بذلك لاحقًا
  2. اضغط ‘activate’ و’continue’ في النافذة المنبثقة للتأكيد
  3. اضغط على أيقونة تطبيق OpenReplay الجديد، ثم في القائمة المنسدلة على اليسار ‘IDP Certificate Valid’ اختر ‘Download certificate’
  4. على خادمك، شغّل openreplay -e
  5. ضمن قسم chalice، أزِل التعليق ثم اضبط متغيرات البيئة التالية:
  • idp_entityId: openreplay/TENANT_KEY
  • idp_sso_url: https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY
  • idp_x509cert: الشهادة المُنزَّلة، يجب أن تكون نصًّا في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
  • idp_name: JumpCloud
  1. أخيرًا، احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ.

وردَ الرد عبر http بدلًا من http

Section titled وردَ الرد عبر http بدلًا من http

هذا أمر شائع جدًّا، ويعود إلى عدم وجود ترويسة ‘X-Forwarded-Proto’ في الطلب. ولحلّ ذلك، تأكّد من أن موازِن التحميل (Load Balancer) يُمرّر الترويسة بشكل صحيح إلى الواجهة الخلفية لـ OpenReplay.