SSO
الدخول الموحّد (عبر SAML2) متاح فقط في إصدار OpenReplay Enterprise.
تهيئة موفّر الهوية (IDP)
Section titled تهيئة موفّر الهوية (IDP)في لوحة تحكم موفّر الهوية لديك، أنشئ تطبيقًا جديدًا باسم openreplay (يمكنك استخدام هذه الأيقونة). في صفحة التهيئة، تأكّد من تعيين القيمة التالية (يُرجى التأكّد من استبدال YOUR_DOMAIN بالقيمة الصحيحة، مثال https://openreplay.mycompany.com):
| المتغيّر | القيمة |
|---|---|
| ACS URL (تُسمّى أيضًا Single Sign On URL أو Consumer URL) | |
| Entity ID (يُسمّى أيضًا Audience) | |
| Single Logout URL (تُسمّى أيضًا SLO URL) | (اختياري) |
| Name ID (يكون أحيانًا قابلاً للتهيئة في قسم ‘Attribute Statements’ أو ‘Parameters’) | Email أو EmailAddress أو urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress، حسب موفّر الهوية لديك |
| SAML initiator | عيّنه إلى Service Provider (اختياري) |
في قسم ‘Attribute Statements’ أو ‘Parameters’، يُرجى التأكّد من تعريف الحقول التالية:
| الحقل | القيمة |
|---|---|
| tenantKey | يمكن العثور على قيمته في لوحة التحكم، ضمن ‘Preferences’ > ‘Account’ (يجب عدم إضافة هذه السمة إذا كنت تستخدم خطة Cloud Dedicated لدينا) |
| firstName | user.firstName |
| lastName | user.lastName |
| internalId | المعرّف الداخلي أو user.email (معرّف المستخدم في نظام إدارة الهوية لديك) (اختياري) |
| groups | يمثّل دور المستخدم وامتياز المسؤول في OpenReplay، وحسب موفّر الهوية لديك قد يكون user.role أو group، إلخ. (اختياري، الافتراضي = member دون امتياز المسؤول). ولتبسيط إدارة أدوار OpenReplay من جهة موفّر الهوية، يمكنك إنشاء مجموعة باسم OpenReplay-admin تضع فيها المستخدمين أصحاب امتياز المسؤول، ومجموعة باسم OpenReplay-member تضع فيها المستخدمين الذين لديهم الدور ‘member’ |
من المفترض الآن أن تكون لديك جميع القيم المطلوبة للخطوة/القسم التالي.
تهيئة الدخول الموحّد (SSO) (SAML2)
Section titled تهيئة الدخول الموحّد (SSO) (SAML2)إذا كنت تستخدم خطة Cloud Dedicated لدينا، فانتقل إلى الكونسول ثم انقر على المثيل وعيّن المتغيّرات ضمن قسم SSO.
وإلا، إذا كنت تشغّل إصدار Enterprise لدينا، فشغّل 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) |
| idp_group_prefixes | بادئات اسم مجموعة موفّر الهوية (اختياري، الافتراضي=OpenReplay-,or-) |
ثم احفظ واخرج باستخدام :wq لكي تدخل التغييرات حيّز التنفيذ:
شهادة OpenReplay
Section titled شهادة OpenReplayهذا اختياري، يمكنك إضافة شهادة x509 لمزيد من أمان الدخول الموحّد:
- شغّل هذا الأمر على خادمك أو على جهازك الآمن (يمكنك تغيير مدة صلاحية شهادتك حسب احتياجاتك):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout openreplay-sso.key -out openreplay-sso.crt
- على خادمك، شغّل
openreplay -e - ضمن قسم
chalice، أضِف متغيّرات البيئة التالية:
- sp_crt: يجب أن تكون سلسلة نصية في سطر واحد، دون فواصل أسطر، من ملف ‘openreplay-sso.crt’ الذي تم إنشاؤه (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- sp_key: يجب أن تكون سلسلة نصية في سطر واحد، دون فواصل أسطر، من ملف ‘openreplay-sso.key’ الذي تم إنشاؤه
- احفظ واخرج باستخدام
:wqلكي تدخل التغييرات حيّز التنفيذ - أضِف ملف ‘openreplay-sso.crt’ الذي تم إنشاؤه إلى تهيئة تطبيق موفّر الهوية لديك
مثال باستخدام Okta
Section titled مثال باستخدام Okta- سجّل الدخول إلى لوحة إدارة Okta وانتقل إلى ‘Applications’ > ‘Applications’
- اضغط على ‘Create new app integration’، ثم اختر SAML 2.0 واضغط على ‘Next’
- عيّن ‘App Name’ إلى OpenReplay (يمكنك رفع هذه الأيقونة) لتطبيقك) ثم اضغط على ‘Next’
- عيّن:
- Single sign on URL إلى
/api/sso/saml2/acs/YOUR_DOMAIN - Audience URI (SP Entity ID) إلى
/api/sso/saml2/metadata/YOUR_DOMAIN - Name ID format إلى
EmailAddress
- عرّف الحقول أدناه في ‘Attribute Statements’:
- tenantKey: التنسيق
Basicوعيّن القيمة إلى، الموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’ (يجب عدم إضافة هذه السمة إذا كنت تستخدم خطة Cloud Dedicated لدينا)TENANT_KEY - firstName: التنسيق
Basicوعيّن القيمة إلىuser.firstName - lastName: التنسيق
Basicوعيّن القيمة إلىuser.lastName - internalId: التنسيق
Basicوعيّن القيمة إلىuser.email
- عرّف الحقل أدناه في ‘Group Attribute Statement’:
- groups: التنسيق
Basic، المرشّحMatch Regex، القيمةOpenReplay-*(أو يمكنك تحديد مرشّح وتعبير منتظم مختلف حسب احتياجاتك)
- اضغط على Next، اختر ‘I’m an Okta customer adding an internal app’ و ‘This is an internal app that we have created’ ثم اضغط على ‘Finish’
- في علامة التبويب Sign On، مرّر للأسفل واضغط على ‘View Setup Instructions’ لرؤية تهيئة SAML2 الخاصة بك
إذا كنت تستخدم خطة Cloud Dedicated لدينا، فانتقل إلى الكونسول ثم انقر على المثيل وعيّن المتغيّرات ضمن قسم SSO.
وإلا، إذا كنت تشغّل إصدار Enterprise لدينا:
- اتصل عبر SSH بتثبيت OpenReplay لديك وشغّل
openreplay -e - ضمن قسم
chalice، أزل التعليق ثم عيّن متغيّرات البيئة التالية:
- idp_entityId: Identity Provider Issuer
- idp_sso_url: Identity Provider Single Sign-On URL
- idp_x509cert: شهادة X.509، يجب أن تكون سلسلة نصية في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- idp_name: Okta
- أخيرًا، احفظ واخرج باستخدام
:wqلكي تدخل التغييرات حيّز التنفيذ
مثال باستخدام Azure Active Directory
Section titled مثال باستخدام Azure Active Directory- سجّل الدخول إلى بوابة Azure وانتقل إلى ‘Azure Active Directory’
- اضغط على ’+ Add’، اختر ‘Enterprise application’ ثم انقر على ‘Create your own application’
- عيّن ‘App Name’ إلى OpenReplay ثم اختر ‘Integrate any other application you don’t find in the gallery (Non-gallery)’ واضغط على ‘Create’
- انتقل إلى ‘Single sign-on’ في القائمة الجانبية اليسرى وعيّن القيم أدناه في كتلة ‘Basic SAML Configuration’:
- Identifier (Entity ID) إلى
/api/sso/saml2/metadata/YOUR_DOMAIN - Reply URL (Assertion Consumer Service URL) إلى
/api/sso/saml2/acs/YOUR_DOMAIN - Logout URL إلى
/api/sso/saml2/sls/YOUR_DOMAIN
- أضِف الـ claims أدناه في كتلة ‘Attribute & Claims’ وتأكّد من ترك حقل ‘Namespace’ فارغًا لكلٍّ منها:
- tenantKey: عيّن القيمة إلى
، الموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’ (يجب عدم إضافة هذه السمة/الـ claim إذا كنت تستخدم خطة Cloud Dedicated لدينا)TENANT_KEY - firstName: عيّن القيمة إلى
user.givenname - lastName: عيّن القيمة إلى
user.surname - internalId: عيّن القيمة إلى
user.mail
- انتقل إلى ‘Users and groups’ وعيّن المستخدمين الذين تختارهم للتطبيق
إذا كنت تستخدم خطة Cloud Dedicated لدينا، فانتقل إلى الكونسول ثم انقر على المثيل وعيّن المتغيّرات ضمن قسم SSO (توجد القيم في ‘Azure Active Directory’ > ‘OpenReplay’ > ‘Single sign-on’).
وإلا، إذا كنت تشغّل إصدار Enterprise لدينا:
- اتصل عبر SSH بتثبيت OpenReplay لديك وشغّل
openreplay -e - ضمن قسم
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، يجب أن تكون سلسلة نصية في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- idp_name: Active Directory
- أخيرًا، احفظ واخرج باستخدام
:wqلكي تدخل التغييرات حيّز التنفيذ
مثال باستخدام Google Workspace (المعروف سابقًا بـ G Suite)
Section titled مثال باستخدام Google Workspace (المعروف سابقًا بـ G Suite)إضافة سمات مخصّصة:
Section titled إضافة سمات مخصّصة:- في وحدة تحكم Google Admin، انتقل إلى ‘Directory’ > ‘Users’ > ‘More options’ > ‘Manage custom attributes’.
- انقر على ‘Add Custom Attribute’.
- عيّن الحقول التالية:
- 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’
- انقر على ‘Add’
- لإضافة قيم إلى السمات المخصّصة الجديدة، انتقل إلى ‘Users’
- اختر المستخدم (المستخدمين) المطلوب
- انقر على ‘User information’ ثم عدّل قسم ‘OpenReplay’
- غيّر قيمة role إلى الدور المطلوب في ‘OpenReplay’ (يجب أن يطابق الدور الدور الذي تم إنشاؤه في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Roles’)
- غيّر قيمة adminPrivileges إلى ‘Yes’ إذا كان مسموحًا للمستخدم بامتلاك امتيازات المسؤول في OpenReplay
- انقر على ‘Save’
التهيئة:
Section titled التهيئة:- سجّل الدخول إلى وحدة تحكم Google Admin وانتقل إلى ‘Apps’
- اضغط على ‘Web and mobile apps’ ثم انقر على ‘Add app’ > ‘Add custom SAML app’
- عيّن ‘App name’ إلى OpenReplay (يمكنك رفع هذه الأيقونة لـ ‘App icon”) ثم اضغط على ‘Continue’
- انسخ ‘SSO URL’ و ‘Entity ID’ و ‘Certificate’ ثم انقر على ‘Continue’ (سنستخدم هذه القيم في الخطوة 11)
- عيّن:
- ACS URL إلى
( /api/sso/saml2/acs/YOUR_DOMAIN /TENANT_KEYTENANT_KEYموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’، ولكن إذا كنت تستخدم خطة Cloud Dedicated لدينا، فاترك قيمة tenantKey فارغة) - Entity ID إلى
/api/sso/saml2/metadata/YOUR_DOMAIN - Name ID format إلى
Email - Name ID إلى
Basic information > Primary Email
- انقر على ‘Continue’ ثم اضغط على ‘Add Mapping’ لإضافة السمات أدناه:
Basic information > First Name-> firstNameBasic information > Last Name-> lastNameBasic information > Primary Email-> internalIdOpenReplay > groups-> groups
- انقر على ‘Finish’
- في وحدة تحكم Google Admin، انتقل إلى ‘Apps’ > ‘Web and mobile apps’ واختر ‘OpenReplay’
- انقر على ‘User access’، اختر ‘ON for everyone’ ثم اضغط على ‘Save’
إذا كنت تستخدم خطة Cloud Dedicated لدينا، فانتقل إلى الكونسول ثم انقر على المثيل وعيّن المتغيّرات ضمن قسم SSO.
وإلا، إذا كنت تشغّل إصدار Enterprise لدينا:
- اتصل عبر SSH بتثبيت OpenReplay لديك وشغّل
openreplay -e - ضمن قسم
chalice > env، أزل التعليق وعيّن السمات التالية باستخدام القيم من الخطوة 4:
- idp_sso_url: الصق قيمة ‘SSO URL’
- idp_entityId: الصق قيمة ‘Entity ID’
- idp_x509cert: استخدم هذه الأداة لتنسيق الشهادة المنسوخة/المنزّلة
- idp_name: عيّن القيمة إلى
G-Suite - idp_tenantKey:
موجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’TENANT_KEY
- أخيرًا، احفظ واخرج باستخدام
:wqلكي تدخل التغييرات حيّز التنفيذ
مثال باستخدام JumpCloud
Section titled مثال باستخدام JumpCloud- سجّل الدخول إلى لوحة إدارة JumpCloud وفي القائمة اليسرى، انتقل إلى ‘SSO’
- اضغط على ’+ Add New Application’، ثم اختر ‘Custom SAML App’
- عيّن ‘Display Label’ إلى OpenReplay (يمكنك رفع هذه الأيقونة لتطبيقك) ثم انتقل إلى علامة التبويب ‘SSO’
- عيّن:
- IdP Entity ID إلى
openreplay/(TENANT_KEYTENANT_KEYموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’، ولكن إذا كنت تستخدم خطة Cloud Dedicated لدينا، فاترك قيمة tenantKey فارغة) - SP Entity ID إلى
/api/sso/saml2/metadata/YOUR_DOMAIN - ACS URL إلى
/api/sso/saml2/acs/YOUR_DOMAIN - 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-(لا يمكن تغيير هذه القيمة لاحقًا، وإذا كنت تستخدم خطة Cloud Dedicated لدينا، فاترك جزء tenantKey فارغًا)TENANT_KEY
- إذا اتّبعت تعليمات شهادة OpenReplay، فيمكنك رفع ملف ‘openreplay-sso.crt’ الذي تم إنشاؤه بالضغط على ‘Upload SP Certificate’، وإلا فتجاهل هذه الخطوة
- عرّف الحقول أدناه في ‘USER ATTRIBUTE MAPPING’ بالضغط على زر ‘add attribute’:
- firstName: عيّن القيمة إلى
firstname - lastName: عيّن القيمة إلى
lastname - internalId: عيّن القيمة إلى
email - groups: اختياري، دور المستخدم وامتياز المسؤول في OpenReplay، فإذا كانت قيمة ثابتة لجميع المستخدمين، فينبغي تعريفها في الخطوة التالية، وإلا فعليك إضافة سمة نصية جديدة إلى مجموعة JumpCloud، وتسميتها
OpenReplay-groupsوتعيين القيمة إلى اسم الدور، ثم في تهيئة SSO، اختر ‘Custom User or Group Attribute’ وعيّن القيمة إلىOpenReplay-groups.
- عرّف الحقول أدناه في ‘CONSTANT ATTRIBUTES’ بالضغط على زر ‘add attribute’:
- tenantKey: عيّن القيمة إلى
، الموجودة في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’ (يجب عدم إضافة هذه السمة إذا كنت تستخدم خطة Cloud Dedicated لدينا)TENANT_KEY - groups: اختياري، تجاهله إذا تم تعريفه في الخطوة السابقة، دور المستخدم وامتياز المسؤول في OpenReplay، ويجب أن يطابق اسم الدور المعرَّف مسبقًا في OpenReplay (الافتراضي =
memberدون امتياز المسؤول)
- في هذه المرحلة، يمكنك الانتقال إلى علامة التبويب ‘User Groups’، واختيار مجموعة المستخدمين الذين سيكون لديهم وصول إلى OpenReplay، أو يمكنك القيام بذلك لاحقًا
- اضغط على ‘activate’ و ‘continue’ في النافذة المنبثقة للتأكيد
- اضغط على أيقونة تطبيق OpenReplay الجديد، ثم في القائمة المنسدلة اليسرى ‘IDP Certificate Valid’ اختر ‘Download certificate’
إذا كنت تستخدم خطة Cloud Dedicated لدينا، فانتقل إلى الكونسول ثم انقر على المثيل وعيّن المتغيّرات ضمن قسم SSO.
وإلا، إذا كنت تشغّل إصدار Enterprise لدينا:
- اتصل عبر SSH بتثبيت OpenReplay لديك وشغّل
openreplay -e - ضمن قسم
chalice، أزل التعليق ثم عيّن متغيّرات البيئة التالية:
- idp_entityId:
openreplay/TENANT_KEY - idp_sso_url:
https://sso.jumpcloud.com/saml2/openreplay-TENANT_KEY - idp_x509cert: الشهادة المنزّلة، يجب أن تكون سلسلة نصية في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- idp_name: JumpCloud
- أخيرًا، احفظ واخرج باستخدام
:wqلكي تدخل التغييرات حيّز التنفيذ
توفير الهويات عبر SCIM (System for Cross-domain Identity Management)
Section titled توفير الهويات عبر SCIM (System for Cross-domain Identity Management)يدعم Openreplay خيار توفير هويات المستخدمين في إصدار Enterprise.
للتكامل مع خدمة SCIM في Openreplay، ما عليك سوى تفعيل توفير SCIM في لوحة تحكم موفّر الهوية لديك. يُرجى التأكّد من تعيين القيم التالية لتحقيق تكامل سلس:
| المتغيّر | الوصف |
|---|---|
| SCIM connector base URL | /api/sso/scim/v2/ |
| User unique identifier field name | email |
| Support provisioning actions | Push new users, Push profile updates, Push groups |
| Authentication mode | OAuth2 |
| Access token endpoint | /api/sso/scim/v2/token/ |
| Authorization endpoint | /api/sso/scim/v2/authorize/ |
| Client id | يمكن العثور على قيمته في لوحة التحكم، ضمن ‘Preferences’ > ‘Account’ |
| Client secret | يمكن العثور على قيمته بتنفيذ هذا الاستعلام في قاعدة بيانات Postgres لديك: SELECT tenant_secret FROM tenants WHERE tenant_key = ' |
بعد تعيين هذه القيم، اتّبع التعليمات في لوحة تحكم موفّر الهوية لديك من أجل اختبار التكامل والترخيص للتطبيق.
بعد ذلك، ستتمكّن من توفير هويات المستخدمين باستخدام Openreplay كموفّر خدمة SCIM.
ملاحظة: بينما يعمل Openreplay كموفّر خدمة SCIM، فإنه لا يدعم تقسيم المستخدمين إلى مجموعات متعدّدة (أي أن كل مستخدم لا يمكن أن ينتمي إلا إلى مجموعة واحدة). وإذا لم يُراعَ ذلك، فقد يُعيَّن المستخدم إلى عدد أقل أو أكثر من المشاريع مما هو متوقّع وقد يكون لديه عدد أقل أو أكثر من الأذونات في تطبيق Openreplay.
مثال باستخدام Okta
Section titled مثال باستخدام Oktaفي تطبيق SAML 2.0 لديك، نفّذ ما يلي
إضافة توفير SCIM
Section titled إضافة توفير SCIM- انقر على علامة التبويب General
- في قسم App Settings، انقر على Edit
- في حقل Provisioning، اختر SCIM، وانقر على Save
اختيار خيارات التوفير
Section titled اختيار خيارات التوفير- انقر على علامة التبويب Provisioning. تظهر إعدادات اتصال SCIM ضمن Settings > Integration.
- في Settings > Integration، انقر على Edit.
- حدّد SCIM connector base URL واسم حقل المعرّف الفريد لمستخدميك المذكورين أعلاه.
- ضمن Supported provisioning actions، اختر إجراءات التوفير المذكورة أعلاه.
- عيّن القائمة المنسدلة Authentication Mode إلى القيمة المذكورة أعلاه.
- عيّن Access token endpoint و Authorization endpoint و Client id و Client secret كما هو مذكور أعلاه.
- انقر على Save.
- انقر على Authentiate application.
- في علامة التبويب Provisioning، انقر على To App.
- انقر على Edit، فعّل
Create UsersوUpdate User AttributesوDeactivate Usersواحفظ التغييرات.
- قبل بدء الخطوة التالية، نوصي بإنشاء مجموعات جديدة في Okta، تُسمّى
OpenReplay-adminحيث تُدرج المستخدمين الذين لديهم امتياز المسؤول في OpenReplay، وOpenReplay-membersحيث تُدرج المستخدمين الذين لديهم الدورmemberفي OpenReplay، …
- انتقل إلى علامة التبويب Push Groups، انقر على + Push Groups (بالاسم أو بالقاعدة)، اختر المجموعة التي تريد دفعها إلى OpenReplay، واضغط على save
- في هذه المرحلة، تمثّل المجموعات المدفوعة الأدوار وامتياز المسؤول في OpenReplay، ولا تحتوي على قائمة المستخدمين الذين تم توفيرهم لـ OpenReplay.
- انتقل إلى علامة التبويب Assignmets، وأضِف المستخدمين بالطريقة التي تناسبك (باستخدام الأشخاص أو المجموعات)
الأخطاء
Section titled الأخطاءتم استلام الاستجابة على http بدلاً من https
Section titled تم استلام الاستجابة على http بدلاً من httpsهذا أمر شائع جدًّا، ويعود إلى عدم وجود ترويسة ‘X-Forwarded-Proto’ في الطلب. ولحل ذلك، تأكّد من أن موزّع الحمل (Load Balancer) يُمرّر الترويسة بشكل صحيح إلى الواجهة الخلفية لـ OpenReplay، وشغّل openreplay -e، وضمن قسم ingress-nginx > config، أزل التعليق عن السطر use-forwarded-headers: true.