Конечные точки API сервера Drupal SCIM
Обзор
В этом документе описываются конечные точки SCIM, необходимые для включения функций создания и удаления учетных записей пользователей. SCIM — это стандартный протокол, позволяющий автоматизировать операции CRUD (создание, удаление, обновление) для пользователей. Используя... модульТаким образом, сайт Drupal сможет выступать в качестве SCIM-сервера. Это означает, что любые изменения, внесенные в поставщик идентификации (т.е. в SCIM-клиент), будут синхронизироваться с сайтом Drupal.
Обзор SCIM
- Версия протокола: СКИМ 2.0
- Базовый путь: base_url/scim
- Поддерживаемые ресурсы: Пользователи, группы
- Формат данных: JSON
Аутентификация и заголовки
- Авторизация: Токен на предъявителя
- Тип содержимого: Применение / JSON
- Accept: Применение / JSON
Поддерживаемые операции API
Поддерживаются следующие операции API.
Пользовательские конечные точки
- Деактивировать пользователя
- Получить пользователя
- Список пользователей
- Обновление для пользователей (патч)
- Обновить пользователя (PUT)
- Создать пользователя (POST)
Групповые конечные точки
- Список групп
- Группировать по ID
- Создание группы
- Обновить группу [Атрибуты нечленов]
- Группа обновлений [Участники]
- Удалить группу
Пользовательские конечные точки
1. Деактивировать пользователя (патч)
- Ошибки:
- Пример запроса:
- Пример ответа - 204 Нет содержимого.
Для деактивации или удаления пользователя в Drupal необходимо включить соответствующие настройки в модуле. Эти параметры доступны на странице конфигурации модуля.
PATCH /Users/{user-id}| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ResourceNotFoundException | Указанный пользователь не существует. | 404 |
PATCH /Users/{user-id} HTTP/1.1 Content-Type: application/json Authorization: Bearer { "Операции": [ { "op": "Заменить", "path": "активный", "value": false } ] }
{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "4", "userName": "username", "active": , "emails": [{ "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" }], "meta": { "resourceType": "User" } }
2. Поиск пользователя по его идентификатору.
- Ошибки:
- Пример запроса:
- Пример ответа:
- 404 Не найдено.
- Найдено 200 ОК.
Чтобы получить информацию о существующем пользователе, отправьте GET-запрос по адресу... / Пользователи используя их идентификатор пользователя.
GET /Users/{user-id}| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ResourceNotFoundException | Указанный пользователь не существует. | 404 |
GET /Users/{user-id} HTTP/1.1 Authorization: Bearer { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "Пользователь не найден", "status": 404 }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "4", "userName": "username", "active": 1, "emails": [ { "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" } ], "meta": { "resourceType": "User" } }
3. Список пользователей
- Ошибки:
- Параметры запроса:
- Пример запроса:
- Пример ответа:
- Пример запроса:
- Пример ответа:
- Если пользователь с указанным именем пользователя не найден, мы отправляем пустую схему, указывающую на то, что пользователь не был найден.
- Пример запроса:
- Пример ответа:
- Если пользователь получает электронное письмо.
- Если пользователь не найден по адресу электронной почты, модуль отправляет пустую схему, указывающую на то, что пользователь не был найден.
Этот конечный пункт позволяет фильтровать и получать список конкретных пользователей из существующего списка. Для этого необходимо отправить GET-запрос. / Пользователи С помощью этой конечной точки и добавления параметров фильтра вы можете сузить результаты поиска на основе таких атрибутов, как имя пользователя и адрес электронной почты. Конечная точка поддерживает фильтрованный поиск, но может возвращать максимум 50 записей о пользователях за один запрос.
| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ResourceNotFoundException | Указанный пользователь не существует. | 404 |
GET /Users
3.1 Начальный индекс и количество
Он позволяет использовать параметры запроса startIndex и count. Где startIndex — это начальный ID, а count — максимальное количество результатов, которые может вернуть запрос.
GET /Users?startIndex=1&count=50 Authorization: Bearer
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 2, "startIndex": 1, "itemsPerPage": 2, "Resources": [ { "id": "1", "externalId": "1", "meta": { "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "example1@example.com", "displayName": "example1@example.com", "emails": { "value": "example1@example.com", "type": "work", "primary": true }, "active": true, "name": { "familyName": "", "givenName": "" }, "groups": [ "authenticated,administrator" ], "department": "" }, { "id": "13", "externalId": "13", "meta": { "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "example2", "displayName": "example2", "emails": { "value": "example2@example.com", "type": "work", "primary": true }, "active": true, "name": { "familyName": "", "givenName": "" }, "groups": [ "authenticated,administrator" ], "department": "" }, ] }
3.2 Поиск пользователя по его имени пользователя
GET /Users?filter=userName eq "admin"
Пользователь не найден - 200 Ok.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "Resources": [] }
Пользователь найден - 200 Ok.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "uid пользователя", "username": "admin", "emails": [ { "value": "email@gmail.com", "primary": true, "type": "work" } ] } ] }
3.3. Поиск пользователя по его адресу электронной почты.
GET /Users?filter=emails[type eq "work"].value eq "email@gmail.com" Authorization: Bearer
Пользователь найден - 200 Ok.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "uid of user", "username": "Username", "emails": [ { "value": "email@gmail.com", "primary": true, "type": "work" } ] } ] }
Пользователь не найден - 200 Ok.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "Resources": [] }
4. Обновление для пользователя (патч)
Если пользователь найден в GET-запросе, будет выполнен PATCH- или PUT-запрос для обновления пользователя; в противном случае будет выполнен POST-запрос для создания пользователя. Вы можете обновить определенные поля пользователя, используя PATCH запрос к / Пользователи конечная точка. В теле запроса укажите атрибут, который вы хотите изменить, и его обновленное значение.
PATCH /Users/{user-id}- Ошибки:
- Пример запроса:
- Пример ответа: 200 OK.
| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ResourceNotFoundException | Указанный пользователь не существует. | 404 |
PATCH/Users/{{user-id}} HTTP/1.1 Content-Type: application/json Authorization: Bearer { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "Replace", "path": "emails[type eq \"work\"].value", "value": "email@gmail.com" }, { "op": "Replace", "path": "name.familyName", "value": "familyname" } ] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "uid of user", "userName": "Username", "active": 1, "emails": [ { "primary": true, "value": "email@gmail.com", "type": "work", "display": "email@gmail.com" } ], "meta": { "resourceType": "User" } }
5. Обновить пользователя (PUT)
Вы можете обновить данные пользователя, используя PUT-запрос. / Пользователи Конечная точка. Этот запрос заменяет весь объект пользователя, поэтому все необходимые атрибуты пользователя должны быть указаны в теле запроса.
PUT /Users/{{user-id}}- Ошибки:
- Пример запроса:
- Пример ответа: 200 ok.
| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ResourceNotFoundException | Указанный пользователь не существует. | 404 |
PUT/Users/{{user-id}} HTTP/1.1 Content-Type: application/json Authorization: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "97", "userName": "exmple", "active": 1, "emails": [ { "primary": true, "value": "exmple@example.com", "type": "work", "display": "exmple@example.com" } ], "meta": { "resourceType": "User" }, "name": { "givenName": "givenName", "familyName": "familyName", "middleName": "sdf", "honorificPrefix": "sdf" }, "displayName": "givenName familyName", "nickName": "df", "addresses": [ { "primary": true, "locality": "fdd" } ], "locale": "en-US", "externalId": "9rqltOOLI95d7", "groups": [] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "97", "userName": "example", "active": 1, "emails": [ { "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" } ], "meta": { "resourceType": "User" } }
6. Создание пользователя (POST)
Используйте POST-запрос на / Пользователи Конечная точка для создания нового пользователя. Убедитесь, что в теле запроса указаны все необходимые поля. Успешный запрос возвращает код 201 Created и подробные сведения о пользователе.
POST /Users
- Ошибки:
- Пример запроса:
- Пример ответа: 201 создан.
| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| ConflictException | Пользователь уже существует. | 409 |
POST /Users HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"], "externalId": "abc", "userName": "example", "active": true, "emails": [{ "primary": true, "type": "work", "value": "example@example.com" }], "meta": { "resourceType": "User" }, "name": { "formatted": "first name last name", "familyName": "last name", "givenName": "first name" } }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ], "externalId": "abc", "userName": "example", "active": true, "emails": [ { "primary": true, "type": "work", "value": "example@example.com" } ], "meta": { "resourceType": "User" }, "name": { "formatted": "first name last name", "familyName": "last name", "givenName": "first name" }, "id": "98" }
Групповые конечные точки
1. Список групп
/Группы Конечная точка поддерживает GET-запросы для получения списка групп, доступных на SCIM-сервере. Эта операция возвращает только основную информацию о группе, такую как идентификатор группы и отображаемое имя. Список участников всегда возвращается пустым, поскольку конечная точка не включает в ответ сведения о членстве в группе.
- Пример запроса:
- Пример ответа - 200 ok
- Поддерживаемый фильтр:
- Пример запроса:
- Пример ответа: 200 ok.
GET /Groups HTTP/1.1 Authorization: Bearer
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 4, "Resources": [ { "id": "anonymous", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "anonymous" }, { "id": "authenticated", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "authenticated" }, { "id": "administrator", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "administrator" }, { "id": "editor_admin", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "editor_admin" } ], "startIndex": 1, "itemsPerPage": 4 }
GET /Groups?filter=displayName eq "administrator"
GET /scim/Groups?filter=displayName eq "administrator" HTTP/1.1 Authorization: Bearer
Если группа найдена с указанным именем.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "Resources": [], "startIndex": 1, "itemsPerPage": 20 }
2. Поиск по идентификатору
/Группы/{id} Получает ресурс группы, связанный с указанным идентификатором группы. В ответе возвращаются только метаданные группы. Подробная информация о членстве не включается.
- Пример запроса:
- Пример ответа:
GET /Groups/administrator HTTP/1.1 Authorization: Bearer
Найдено - 200 OK.
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "administrator", "meta": { "resourceType": "Group" }, "displayName": "Administrator" }
Не найдено - 404.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "Администратор группы не найден", "status": 404 }
3 Создать группу
Использовать POST запросить /Группы Для создания новой группы необходимо указать её название (displayName). Хотя в теле запроса можно указать имена участников, ответ всегда будет содержать пустой список участников.
- Ошибки:
- Пример запроса:
- Запрос без списка участников.
- Запрос со списком участников.
- Ответ: 201 создан.
| Ошибка | Состояние | HTTP Status Code |
|---|---|---|
| ValidationException | Либо модуль не активирован, либо используется неправильный лицензионный ключ. | 400 |
| UnauthorizedException | Заголовок авторизации недействителен или отсутствует. | 401 |
| Операциянотсуппортедисключение | Изменение состава группы не допускается. | 501 |
POST /Groups HTTP/1.1 Authorization: Bearer { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "externalId": "enternal-id", "displayName": "group2", "meta": { "resourceType": "Group" } }
POST /Groups HTTP/1.1 Content-Type: application/json Authorization: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "group1", "members": [ { "value": "3", "display": "admin@gmail.com" }, { "value": "2", "display": "admin2@gmail.com" } ] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "externalId": "enternal-id", "displayName": "group2", "meta": { "resourceType": "Group" }, "members": [], "id": "group2" }
4. Обновить группу [Атрибуты, не являющиеся членами группы]
Вы можете обновить основные данные группы, такие как отображаемое имя, с помощью запроса PATCH. /Groups/{group-id}Этот запрос обновляет только предоставленные вами атрибуты и не изменяет состав группы. В случае успешного обновления возвращается ошибка 204 «Нет содержимого».
- Пример запроса:
- Пример ответа - 204 Нет содержимого.
PATCH /Groups/group1 HTTP/1.1 Authorization: Bearer{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Replace", "path": "displayName", "value": "updated group1" }] }
5. Обновление группы [Участники]
/Группы/{id} Конечная точка поддерживает добавление и удаление участников с помощью запроса PATCH. Тело запроса должно содержать список идентификаторов пользователей, которых вы хотите добавить. Это действие только обновляет участников группы и возвращает код 204 No Content в случае успеха.
- Пример запроса:
- Добавить участника в группу.
- Удалите участника из группы.
- Пример ответа: 204 Нет содержимого.
PATCH /Groups/updated group1 HTTP/1.1 Content-Type: application/json Authorization: Bearer { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Add", "path": "members", "value": [{ "$ref": null, "value": "97" }] }] }
PATCH /Groups/updated group1 HTTP/1.1 Authorization: Bearer { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Remove", "path": "members", "value": [{ "$ref": null, "value": "97" }] }] }
6. Удалить группу
/Группы/{id} Конечная точка поддерживает удаление группы с помощью УДАЛИТЬ Запрос. Эта операция удаляет группу с SCIM-сервера. В случае успешного удаления возвращается... 204 Нет контента Ответ, указывающий на то, что группа была удалена, но текст ответа отсутствует.
- Пример запроса:
- Пример ответа - 204 Нет содержимого.
DELETE /Groups/updated group1 HTTP/1.1 Authorization: Bearer
Если настройка не удалась, пожалуйста, свяжитесь с нами по адресу: drupalsupport@xecurify.com. Пожалуйста, пришлите скриншот окна с ошибкой, и мы поможем вам решить проблему и проведем вас через процесс настройки.
