description:"Налаштуйте провізіонінг SCIM 2.0 для синхронізації користувачів і груп з вашого постачальника ідентифікації до SnapOtter. Охоплює Okta, Azure AD / Entra ID та власні інтеграції."
SnapOtter реалізує SCIM 2.0 (System for Cross-domain Identity Management) для автоматизованого провізіонінгу користувачів і груп. Ваш постачальник ідентифікації може створювати, оновлювати, деактивувати та повторно активувати облікові записи користувачів і синхронізувати членство у групах автоматично.
::: tip Функція enterprise
Провізіонінг SCIM потребує ліцензії **enterprise** з функцією `scim`. Він недоступний у плані team. Без цієї функції всі кінцеві точки SCIM (крім discovery) повертають 403.
:::
## Передумови {#prerequisites}
- Запущений екземпляр SnapOtter, доступний за публічним URL
- Вбудований обліковий запис SnapOtter `admin` із повним ефективним набором дозволів. Делегована спеціальна роль або ключ API адміністратора, у якому відсутні будь-які дозволи адміністратора, не можуть створити або відкликати глобальний маркер SCIM.
`POST /api/v1/enterprise/scim/token` генерує новий маркер SCIM. Оскільки маркер може надавати та змінювати користувачів у примірнику, для цієї кінцевої точки потрібна вбудована роль `admin` із повним ефективним набором дозволів адміністратора. Утримання `users:manage` у спеціальній ролі недостатньо.
Застарілі неверсійовані маркери SCIM відхилено. Після оновлення до випуску, який видає токени `so_scim_v2_...`, згенеруйте новий токен і оновіть постачальника ідентифікаційної інформації, перш ніж відновити надання.
| User | Обліковий запис користувача | Так | Так | Так | М'яке видалення |
| Group | Team | Так | Так | Так | Так |
::: warning
Групи SCIM зіставляються з **teams** SnapOtter, а не з ролями. SCIM не може встановлювати роль користувача. Усім користувачам, створеним через SCIM, призначається роль `user`. Щоб змінити роль користувача, скористайтеся адмін-інтерфейсом SnapOtter.
:::
## Операції з користувачами {#user-operations}
### Створення користувача {#create-user}
`POST /api/v1/scim/v2/Users`
Створює новий обліковий запис користувача з `authProvider`, встановленим у`scim`, та роллю `user`. Користувача призначено до команди Default. Якщо `active` дорівнює `false`, роль натомість встановлюється у `disabled`.
Обов'язкові атрибути: `userName`. Необов'язкові: `externalId`, `emails`, `active` (за замовчуванням `true`).
### Список і фільтрація користувачів {#list-and-filter-users}
`GET /api/v1/scim/v2/Users`
Повертає посторінковий список користувачів. Підтримує параметри запиту `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. Підтримувані операції:
Щоб повторно активувати раніше деактивованого користувача, надішліть запит `PUT` або `PATCH` з `active: true`. SnapOtter відновлює початкову роль, що була до деактивації (наприклад, `disabled:editor` знову стає `editor`). Якщо початкову роль визначити не вдається, відбувається повернення до `user`.
::: details Приклад: деактивація та повторна активація через PATCH
- **Secret Token**: токен SCIM Bearer, створений вище
4. Натисніть **Test Connection**, а потім **Save**.
5.У розділі **Mappings** налаштуйте зіставлення атрибутів користувачів і груп. Значення за замовчуванням зазвичай працюють, але переконайтеся, що `userName` зіставляється з `userPrincipalName` чи `mail` за потреби.
Azure провізіонує користувачів і групи за фіксованим циклом синхронізації (зазвичай кожні 40 хвилин).
## Кінцеві точки discovery {#discovery-endpoints}
Ці три кінцеві точки доступні без автентифікації та описують можливості сервера SCIM:
| Кінцева точка | Опис |
|---|---|
| `GET /api/v1/scim/v2/ServiceProviderConfig` | Можливості сервера та підтримувані функції |
| `GET /api/v1/scim/v2/Schemas` | Визначення схем User і Group |
| `GET /api/v1/scim/v2/ResourceTypes` | Доступні типи ресурсів (User, Group) |
`ServiceProviderConfig` оголошує такі можливості:
| Функція | Підтримується |
|---|---|
| Patch | Так |
| Bulk | Ні |
| Filter | Так (максимум 200 результатів, лише оператор `eq`) |
| Change password | Ні |
| Sort | Ні |
| ETag | Ні |
## Обмеження {#limitations}
- **Фільтрація**: підтримується лише оператор `eq`. Складні фільтри, оператори `and`/`or`, `co` (contains) і`sw` (starts with) не реалізовано.
- **Пакетні операції**: не підтримуються.
- **Sort і ETag**: не підтримуються.
- **Ролі**: SCIM не може призначати ролі SnapOtter. Усі провізіоновані користувачі отримують роль `user`.
- **MAX_USERS**: обмеження змінної середовища `MAX_USERS` не застосовується під час створення користувачів через SCIM. Якщо вам потрібно обмежити кількість користувачів, керуйте призначеннями у своєму IdP.
- **Один токен**: одночасно активним може бути лише один токен SCIM. Якщо кільком IdP потрібен доступ через 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.
Користувач із таким самим іменем уже існує. Це може статися, коли IdP повторює невдале створення. Перевірте наявність дублікатів імен користувачів на панелі адміністратора SnapOtter.
IdP надсилає понад 1000 запитів за хвилину. Зазвичай це трапляється під час великої початкової синхронізації. Більшість IdP автоматично повторюють спроби після скидання вікна обмеження частоти. Якщо проблема не зникає, перевірте інтервал синхронізації провізіонінгу свого IdP.
### Користувачів деповізіоновано, але не видалено з інтерфейсу {#users-deprovisioned-but-not-removed-from-the-ui}
DELETE у SCIM є м'якою деактивацією. Деактивовані користувачі й далі відображаються у списку користувачів адміністратора зі статусом «вимкнено». Це зроблено навмисно, щоб зберегти їхні дані. Їхня роль відображається як `disabled:<original-role>`.