SSO

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

SSO

الدخول الموحد (عبر SAML2) متاح فقط في OpenReplay Enterprise Edition وعلى نسخ Dedicated.

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

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

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

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

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

الحقلالقيمة
tenantKeyTENANT_KEY يمكن العثور على قيمته في الـ Dashboard، ضمن ‘Preferences’ > ‘Account’ (ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud)
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/api/sso/saml2/acs/
  • Audience URI (SP Entity ID) على YOUR_DOMAIN/api/sso/saml2/metadata/
  • Name ID format على EmailAddress
  1. عرّف الحقول أدناه في ‘Attribute Statements’:
  • tenantKey: التنسيق Basic واضبط القيمة على TENANT_KEY، الموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’ (ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud).
  • 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/api/sso/saml2/metadata/
  • Reply URL (Assertion Consumer Service URL) على YOUR_DOMAIN/api/sso/saml2/acs/
  • Logout URL على YOUR_DOMAIN/api/sso/saml2/sls/
  1. أضف المطالبات (claims) أدناه في كتلة ‘Attribute & Claims’ وتأكد من ترك حقل ‘Namespace’ فارغًا لكل منها:
  • tenantKey: اضبط القيمة على TENANT_KEY، الموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’ (ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud).
  • 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/api/sso/saml2/acs/TENANT_KEY/ (تُوجد TENANT_KEY في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’. ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud.)
  • Entity ID على YOUR_DOMAIN/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’ (ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud).
  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/api/sso/saml2/metadata/
  • ACS URL على YOUR_DOMAIN/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-Certificate، فيمكنك رفع ملف ‘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’ (ملاحظة: يجب تجاهله/تركه فارغًا إذا كنت تستخدم نسخة dedicated/cloud).
  • 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 لكي تدخل التغييرات حيّز التنفيذ.

The response was received at http instead of http

Section titled The response was received at http instead of http

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