description:"إعداد توفير SCIM 2.0 لمزامنة المستخدمين والمجموعات من موفّر الهوية لديك إلى SnapOtter. يغطي Okta وAzure AD / Entra ID والتكاملات المخصّصة."
يطبّق SnapOtter معيار SCIM 2.0 (نظام إدارة الهوية عبر النطاقات) للتوفير الآلي للمستخدمين والمجموعات. يمكن لموفّر الهوية لديك إنشاء حسابات المستخدمين وتحديثها وتعطيلها وإعادة تنشيطها ومزامنة عضويات المجموعات تلقائياً.
::: tip ميزة للمؤسسات
يتطلّب توفير SCIM ترخيص **enterprise** مع ميزة `scim`. وهو غير متاح في خطة الفريق. وبدون هذه الميزة، تُعيد جميع نقاط نهاية SCIM (باستثناء الاكتشاف) رمز الحالة 403.
:::
## المتطلبات المسبقة {#prerequisites}
- مثيل SnapOtter قيد التشغيل يمكن الوصول إليه عبر عنوان URL عام
- حساب SnapOtter `admin` مدمج مع مجموعة الأذونات الفعالة الكاملة الخاصة به. لا يمكن لدور مخصص مفوض أو مفتاح API للمشرف الذي يفتقد أي إذن مسؤول إنشاء أو إبطال الرمز المميز SCIM.
يقوم `POST /api/v1/enterprise/scim/token` بإنشاء رمز SCIM جديد. نظرًا لأن الرمز المميز يمكنه توفير المستخدمين وتغييرهم عبر المثيل، فإن نقطة النهاية هذه تتطلب دور `admin` المدمج مع مجموعة أذونات المسؤول الفعالة الكاملة. إن الاحتفاظ بـ `users:manage` في دور مخصص ليس كافيًا.
يتم رفض الرموز المميزة SCIM القديمة التي لم يتم إصدارها. بعد الترقية إلى إصدار يُصدر رموز `so_scim_v2_...`، قم بإنشاء رمز مميز جديد وقم بتحديث موفر الهوية الخاص بك قبل استئناف التزويد.
تُقيّد نقاط نهاية SCIM بمعدّل 1000 طلب في الدقيقة لكل رمز. يؤدّي تجاوز هذا الحدّ إلى إعادة رمز الحالة HTTP 429.
## الموارد المدعومة {#supported-resources}
| مورد SCIM | مفهوم SnapOtter | إنشاء | قراءة | تحديث | حذف |
|---|---|---|---|---|---|
| المستخدم | حساب المستخدم | نعم | نعم | نعم | حذف مبدئي |
| المجموعة | الفريق | نعم | نعم | نعم | نعم |
::: warning
تُطابَق مجموعات SCIM مع **فرق** SnapOtter، لا مع الأدوار. لا يستطيع SCIM ضبط دور المستخدم. يُخصَّص جميع المستخدمين المنشأين عبر SCIM للدور `user`. لتغيير دور المستخدم، استخدم واجهة مسؤول SnapOtter.
:::
## عمليات المستخدم {#user-operations}
### إنشاء مستخدم {#create-user}
`POST /api/v1/scim/v2/Users`
يُنشئ حساب مستخدم جديداً مع ضبط `authProvider` على `scim` والدور `user`. يُخصَّص المستخدم للفريق الافتراضي. إذا كان `active` يساوي `false`، فيُضبَط الدور على `disabled` بدلاً من ذلك.
يُعيد قائمة مصفّحة بالمستخدمين. يدعم معاملَي الاستعلام `startIndex` و`count` (بحدّ أقصى 200 نتيجة لكل صفحة).
تدعم التصفية `eq` (يساوي) فقط، على هذه السمات:
-`userName eq "jane"`
-`externalId eq "ext-12345"`
تُعيد عوامل التصفية والسمات الأخرى رمز الحالة HTTP 400.
### جلب مستخدم {#get-user}
`GET /api/v1/scim/v2/Users/:id`
يُعيد مستخدماً واحداً بحسب معرّف مستخدم SnapOtter الخاص به.
### استبدال مستخدم {#replace-user}
`PUT /api/v1/scim/v2/Users/:id`
يستبدل سمات المستخدم. يدعم `userName` و`externalId` و`emails` و`active`. تُفحَص تغييرات اسم المستخدم بحثاً عن التعارضات (409 إذا كان اسم المستخدم الجديد مأخوذاً من قِبل مستخدم آخر).
### تصحيح مستخدم {#patch-user}
`PATCH /api/v1/scim/v2/Users/:id`
تحديث جزئي باستخدام SCIM PatchOp. العمليات المدعومة:
لا يحذف SnapOtter المستخدمين حذفاً نهائياً عبر SCIM. بدلاً من ذلك، تنفّذ عملية DELETE تعطيلاً مبدئياً:
1. يُغيَّر دور المستخدم من قيمته الحالية (مثل `editor`) إلى `disabled:editor`، مع الحفاظ على الدور الأصلي.
2. تُمحى كلمة مرور المستخدم.
3. تُلغى جميع الجلسات النشطة.
4. تُلغى جميع مفاتيح API.
لم يعُد بإمكان المستخدم تسجيل الدخول أو استخدام أي مفاتيح API. تُحفَظ بياناته (الملفات والسجل).
### إعادة تنشيط مستخدم {#reactivate-user}
لإعادة تنشيط مستخدم مُعطَّل سابقاً، أرسِل طلب `PUT` أو `PATCH` مع `active: true`. يستعيد SnapOtter الدور الأصلي من قبل التعطيل (مثلاً يعود `disabled:editor` إلى `editor` مرة أخرى). إذا تعذّر تحديد الدور الأصلي، فيُستخدَم `user` كبديل.
::: details مثال: التعطيل وإعادة التنشيط عبر PATCH
5. تحت **Mappings**، اضبط تعيينات سمات المستخدم والمجموعة. عادةً ما تعمل الإعدادات الافتراضية، لكن تأكّد من أن `userName` يُطابَق مع `userPrincipalName` أو `mail` حسب رغبتك.
6. اضبط **Provisioning Status** على **On** واحفظ.
يوفّر Azure المستخدمين والمجموعات على دورة مزامنة ثابتة (عادةً كل 40 دقيقة).
## نقاط نهاية الاكتشاف {#discovery-endpoints}
تتوفّر نقاط النهاية الثلاث هذه دون مصادقة وتصف قدرات خادم SCIM:
- **التصفية**: يُدعَم العامل `eq` فقط. أما عوامل التصفية المركّبة وعاملا `and`/`or` و`co` (يحتوي) و`sw` (يبدأ بـ) فهي غير مطبَّقة.
- **العمليات المجمّعة**: غير مدعومة.
- **Sort وETag**: غير مدعومين.
- **الأدوار**: لا يستطيع SCIM تعيين أدوار SnapOtter. يحصل جميع المستخدمين المُوفَّرين على الدور `user`.
- **MAX_USERS**: لا يُفرَض حدّ متغيّر البيئة `MAX_USERS` على إنشاء مستخدم SCIM. إذا احتجت إلى تحديد سقف لأعداد المستخدمين، فأدِر التعيينات في موفّر الهوية لديك.
- **رمز واحد**: لا يمكن أن يكون سوى رمز SCIM واحد نشطاً في كل مرة. إذا احتاج عدة موفّري هوية إلى وصول SCIM، فعليهم مشاركة الرمز.
- **المجموعات هي فرق**: تقابل مجموعات SCIM الفرق، لا الأدوار أو مجموعات الأذونات.
## استكشاف الأخطاء وإصلاحها {#troubleshooting}
### 403 "SCIM provisioning requires an enterprise license with the scim feature" {#_403-scim-provisioning-requires-an-enterprise-license-with-the-scim-feature}
ترخيصك لا يتضمّن ميزة `scim`، أو لا يوجد ترخيص مضبوط. يتطلّب SCIM ترخيص خطة enterprise. تأكّد من ضبط `SNAPOTTER_LICENSE_KEY` ومن أن الترخيص يتضمّن ميزة `scim`.
الرمز مميز بشكل غير صحيح، أو يستخدم التنسيق الذي لم يتم إصداره، أو لا يتطابق مع التجزئة المخزنة. أنشئ رمز `so_scim_v2_...` الحالي وقم بتحديث الرمز المميز في إعدادات توفير IdP.
يوجد مستخدم بنفس اسم المستخدم بالفعل. يمكن أن يحدث هذا عندما يعيد موفّر الهوية محاولة إنشاء فاشل. تحقّق من أسماء المستخدمين المكرّرة في لوحة مسؤول SnapOtter.
يرسل موفّر الهوية أكثر من 1000 طلب في الدقيقة. يحدث هذا عادةً أثناء المزامنة الأولية الكبيرة. تعيد معظم موفّري الهوية المحاولة تلقائياً بعد إعادة ضبط نافذة تحديد المعدّل. إذا استمرّت المشكلة، فتحقّق من فاصل مزامنة التوفير لدى موفّر الهوية.
### أُلغي توفير المستخدمين لكن لم يُزالوا من الواجهة {#users-deprovisioned-but-not-removed-from-the-ui}
عملية SCIM DELETE هي تعطيل مبدئي. يظلّ المستخدمون المُعطَّلون يظهرون في قائمة مستخدمي المسؤول بحالة معطّلة. هذا مقصود بالتصميم للحفاظ على بياناتهم. يظهر دورهم بوصفه `disabled:<original-role>`.