SSO
الدخول الموحّد (عبر SAML2) متاح فقط في OpenReplay Enterprise Edition.
إعداد موفّر الهوية (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 | اضبطه على Service Provider (اختياري) |
في قسم ‘Attribute Statements’ أو ‘Parameters’، يُرجى التأكّد من تعريف الحقول التالية:
| الحقل | القيمة |
|---|---|
| tenantKey | يمكن العثور على قيمته في لوحة التحكم، ضمن ‘Preferences’ > ‘Account’ |
| firstName | user.firstName |
| lastName | user.lastName |
| internalId | المعرّف الداخلي أو user.email (معرّف المستخدم في نظام إدارة الهوية الخاص بك) (اختياري) |
| role | دور المستخدم؛ حسب موفّر الهوية الخاص بك قد يكون user.role أو group، وما إلى ذلك. (اختياري، الافتراضي = member) |
| adminPrivileges | ما إذا كان المستخدم يمتلك امتيازات المسؤول أم لا؛ إذا احتوى هذا الحقل على أي قيمة مختلفة عن false، فسيُعتبر true. (اختياري، الافتراضي = false) |
ينبغي أن تكون لديك الآن جميع القيم المطلوبة للخطوة/القسم التالي.
إعداد SSO (SAML2)
Section titled إعداد SSO (SAML2)لتفعيل 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 لتسري التغييرات:
شهادة OpenReplay
Section titled شهادة OpenReplayهذا اختياري؛ يمكنك إضافة شهادة x509 لمزيد من أمان SSO:
- شغّل هذا الأمر في خادمك أو في جهازك الآمن (يمكنك تغيير مدة صلاحية شهادتك وفقًا لاحتياجاتك):
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’TENANT_KEY - firstName: التنسيق
Basicواضبط القيمة علىuser.firstName - lastName: التنسيق
Basicواضبط القيمة علىuser.lastName - internalId: التنسيق
Basicواضبط القيمة علىuser.email
- عرّف الحقل أدناه في ‘Group Attribute Statements’:
- role: التنسيق
Basic، المرشّحMatch Regex، القيمة.*(أو يمكنك تحديد مرشّح وتعبير نمطي مختلفين وفقًا لاحتياجاتك) - adminPrivileges: التنسيق
Basic، المرشّحMatch Regex، القيمةadmin(سيحصل المستخدم الحالي علىadmin privilegesإذا كان جزءًا من مجموعة admin)
- اضغط على 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 الخاص بك
- في خادمك، شغّل
openreplay -e - ضمن قسم
chalice، أزِل التعليق ثم اضبط متغيّرات البيئة التالية:
- idp_entityId: Identity Provider Issuer
- idp_sso_url: Identity Provider Single Sign-On URL
- idp_x509cert: X.509 Certificate، يجب أن يكون سلسلة نصية في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- 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’TENANT_KEY - firstName: اضبط القيمة على
user.givenname - lastName: اضبط القيمة على
user.surname - internalId: اضبط القيمة على
user.mail
- انتقل إلى ‘Users and groups’ وعيّن المستخدمين الذين تختارهم للتطبيق
- الآن اتصل عبر 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 Certificate، يجب أن يكون سلسلة نصية في سطر واحد، دون فواصل أسطر (يمكنك استخدام هذه الأداة لتنسيق قيمتك)
- 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’) - 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 > role-> roleOpenReplay > adminPrivileges-> adminPrivileges
- انقر على ‘Finish’
- في وحدة تحكم Google Admin، انتقل إلى ‘Apps’ > ‘Web and mobile apps’ واختر ‘OpenReplay’
- انقر على ‘User access’، واختر ‘ON for everyone’ ثم اضغط على ‘Save’
- في خادمك، شغّل
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_KEY - 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-(لا يمكن تغيير هذه القيمة لاحقًا)TENANT_KEY
- إذا اتبعت تعليمات شهادة OpenReplay، يمكنك رفع ملف ‘openreplay-sso.crt’ الذي تم إنشاؤه بالضغط على ‘Upload SP Certificate’، وإلا فتجاهل هذه الخطوة
- عرّف الحقول أدناه في ‘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.
- عرّف الحقول أدناه في ‘CONSTANT ATTRIBUTES’ بالضغط على زر ‘add attribute’:
- tenantKey: اضبط القيمة على
، والتي توجد في لوحة تحكم OpenReplay ضمن ‘Preferences’ > ‘Account’TENANT_KEY - role: اختياري، تجاهله إذا كان معرّفًا في الخطوة السابقة؛ دور المستخدم في OpenReplay، وينبغي أن يطابق اسم الدور المعرّف سابقًا في OpenReplay (الافتراضي =
member) - adminPrivileges: اختياري، تجاهله إذا كان معرّفًا في الخطوة السابقة؛ اضبط القيمة على
trueإذا كنت تريد منح المستخدمين الجدد امتياز المسؤول، وfalseإن لم تكن تريد ذلك (الافتراضي =false)
- في هذه المرحلة، يمكنك الانتقال إلى علامة التبويب ‘User Groups’ واختيار مجموعة المستخدمين الذين سيكون لديهم وصول إلى OpenReplay، أو يمكنك القيام بذلك لاحقًا
- اضغط على ‘activate’ و’continue’ في النافذة المنبثقة للتأكيد
- اضغط على أيقونة تطبيق OpenReplay الجديد، ثم في القائمة المنسدلة اليسرى ‘IDP Certificate Valid’ اختر ‘Download certificate’
- في خادمك، شغّل
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لتسري التغييرات.
الأخطاء
Section titled الأخطاءتم استلام الاستجابة عبر http بدلاً من http
Section titled تم استلام الاستجابة عبر http بدلاً من httpهذا أمر شائع جدًا، ويعود سببه إلى عدم وجود ترويسة ‘X-Forwarded-Proto’ في الطلب. لحل ذلك، تأكّد من أن موازن الأحمال (Load Balancer) يعيد توجيه الترويسة بشكل صحيح إلى الواجهة الخلفية لـ OpenReplay.