---
canonical: https://docs.ideco.ru/v22/ru/ngfw/api/reports-personal-account-auth-api
---



# Аутентификация пользователей ЛК

::: page-constructor
blocks:
  - type: content-layout-block
    textContent:
      buttons:
        - text: Классический VCE
          theme: action
          width: 'auto'
        - text: Высокопроизводительный VCE
          theme: outlined
          url: https://docs.ideco.ru/api/vpp-v22/ru/ngfw/stat-api/personal-account-auth-log/
          width: 'auto'
        - text: Документация
          theme: outlined
          url: https://docs.ideco.ru/v22/ru/ngfw/settings/reports/personal-account-auth-log
          width: 'auto'
    resetPaddings: false
    textWidth: l
    size: m
    centered: false
:::

{% cut "Получение авторизованных пользователей" %}{#poluchenie-avtorizovannyh-polzovateley}

```
GET /user_cabinet_reports/auth_journal?<GET-параметры, разделенные знаком &>
```

Перечень GET-параметров:
* `limit: integer` - ограничение на количество записей, выбираемых из базы данных;
* `offset: integer` - количество строк, которые необходимо пропустить, прежде чем начать выводить записи, указанные в `limit`;
* `sort: [{"field": "string", "direction": "asc | desc"}]` - список параметров сортировки в прямом порядке:
    * `field` - столбец, по которому производится сортировка;
    * `direction` - направление сортировки: 
      * `asc` - по возрастанию; 
      * `desc` - по убыванию. 
* `search: [{"text": "string", "columns": "string"}]` - объект Search с параметрами поиска подстроки в данных:
    * `text` - искомая строка;
    * `columns` - непустой набор полей, по которым ведется поиск.
* `format_type` - формат данных, поддерживает `CSV` и `JSON`, по умолчанию `JSON`;
<!-- Comment:* `filter: [{"items": [{"column_name": "string", "operator": "OperatorValue", "value": ["string" | "integer" | true | false]}], "link_operator": "and" | "or"}]` - список параметров для фильтрации данных. Фильтры применяются в прямом порядке следования в массиве, с логикой `and` между объектами `Filter`:
    * `items` - массив фильтров FilterItem (`column_name` - поле для фильтрации, `operator` - одно из значений `OperatorValue`, `value` - массив значений фильтра);
    * `link_operator` - логика наложения фильтров `items` (`and` или `or`).

Операторы фильтра `OperatorValue`:
* `contains` - содержит подстроку (без учета регистра);
* `not_contains` - не содержит подстроку (без учета регистра);
* `equals` - равно;
* `not_equals` - не равно;
* `greater` - больше, в `values` передается массив, содержащий только одно значение;
* `greater_equal` - больше или равно, в `values` передается массив, содержащий только одно значение;
* `less_equal` - меньше или равно, в `values` передается массив, содержащий только одно значение;
* `date_range` - диапазон дат, в `values` передается:
    * массив из двух элементов [<левая граница включительно>, <правая граница исключительно>], если нужно отфильтровать по абсолютному диапазону дат;
    * массив из одного элемента ["today" | "yesterday" | "cur_week" | "prev_week" | "cur_month" | "prev_month"], если нужно отфильтровать по относительному диапазону дат.
* `range` - диапазон числовых значений;
* `contains_any` - один из элементов массива содержит подстроку (без учета регистра);
* `not_contains_any` - ни один из элементов массива не содержит подстроку (без учета регистра).-->

**Ответ на успешный запрос:**

```json5
{
    "meta": [
        {
            "name": "string",
            "type": "string"
        },
        ...
    ],
    "data": [
        {
            "id": "string",
            "user_id": "number",
            "login": "string",
            "name": "string",
            "group_name": "string",
            "domain_type": "local" | "ad" | "ald" | "freeipa" | "radius" | "device",
            "ip": "string",
            "country_name": "string",
            "country_code": "string",
            "start": "number",
            "end": "number",
            "time_online": "number"
        },
        ...
    ],
    "rows": "integer",
    "rows_before_limit_at_least": "integer"
}
```

* `meta` - массив метаданных, описывающих поля запроса:
* `name` - имя поля данных;
* `type` - тип данных;
* `data` - массив из `AuthUser` для отображения в таблице. `AuthUser` - объект с данными, соответствующими одной строке таблицы:
    * `id` - идентификатор сессии;
    * `user_id` - идентификатор пользователя;
    * `login` - логин пользователя;
    * `name` - имя пользователя;
    * `group_name` - название родительской группы пользователя, может быть пустой строкой для записей, созданных в UTM до 17 версии;
    * `domain_type` - тип пользователя: 
      * `local` - локальный пользователь Ideco NGFW Novum;
      * `ad` - пользователь, импортированный из Active Directory;
      * `ald` - пользователь, импортированный из ALD Pro;
      * `freeipa` - пользователь, импортированный из FreeIPA;
      * `radius` - пользователь RADIUS-сервера;
      * `device` - клиентское устройство, подключающееся через Ideco Client в режиме Device VPN.
    * `ip` - IP-адрес, с которого подключался пользователь;
    * `country_name` - страна IP-адреса;
    * `country_code` - код страны IP-адреса;
    * `start` - время создания сессии, число в формате `YYYYMMDDhhmmss`;
    * `end` - время удаления сессии, число в формате `YYYYMMDDhhmmss`;
    * `time_online` - время в сети, в секундах (может быть отрицательным числом, если после старта сессии изменили время).
* `rows` - количество `AuthUser`;
* `rows_before_limit_at_least` - общее количество строк (без учета `limit` и `offset`). Если в параметрах запроса отсутствуют `limit` и `offset`, поле `rows_before_limit_at_least` в ответе на запрос будет отсутствовать.

{% endcut %}

{% cut "Выгрузка данных в CSV за определенный период" %}{#vygruzka-dannyh-v-csv-za-opredelennyy-period}

```
GET /user_cabinet_reports/auth_journal?format_type=CSV&<GET-параметры, разделенные знаком &>
```

Перечень GET-параметров:
* `limit: integer` - ограничение на количество записей, выбираемых из базы данных;
* `offset: integer` - количество строк, которые необходимо пропустить, прежде чем начать выводить записи, указанные в `limit`;
* `sort: [{"field": "string", "direction": "asc | desc"}]` - список параметров сортировки в прямом порядке:
    * `field` - столбец, по которому производится сортировка;
    * `direction` - направление сортировки: 
      * `asc` - по возрастанию; 
      * `desc` - по убыванию. 
* `search: [{"text": "string", "columns": "string"}]` - объект Search с параметрами поиска подстроки в данных:
    * `text` - искомая строка;
    * `columns` - непустой набор полей, по которым ведется поиск.
* `format_type` - формат данных, поддерживает `CSV` и `JSON`, по умолчанию `JSON`;
<!-- * `filter: [{"items": [{"column_name": "string", "operator": "OperatorValue", "value": ["string" | "integer" | true | false]}], "link_operator": "and" | "or"}]` - список параметров для фильтрации данных. Фильтры применяются в прямом порядке следования в массиве, с логикой `and` между объектами `Filter`:
    * `items` - массив фильтров FilterItem (`column_name` - поле для фильтрации, `operator` - одно из значений `OperatorValue`, `value` - массив значений фильтра);
    * `link_operator` - логика наложения фильтров `items` (`and` или `or`).

Операторы фильтра `OperatorValue`:
* `contains` - содержит подстроку (без учета регистра);
* `not_contains` - не содержит подстроку (без учета регистра);
* `equals` - равно;
* `not_equals` - не равно;
* `greater` - больше, в `values` передается массив, содержащий только одно значение;
* `greater_equal` - больше или равно, в `values` передается массив, содержащий только одно значение;
* `less_equal` - меньше или равно, в `values` передается массив, содержащий только одно значение;
* `date_range` - диапазон дат, в `values` передается:
    * массив из двух элементов [<левая граница включительно>, <правая граница исключительно>], если нужно отфильтровать по абсолютному диапазону дат;
    * массив из одного элемента ["today" | "yesterday" | "cur_week" | "prev_week" | "cur_month" | "prev_month"], если нужно отфильтровать по относительному диапазону дат.
* `range` - диапазон числовых значений;
* `contains_any` - один из элементов массива содержит подстроку (без учета регистра);
* `not_contains_any` - ни один из элементов массива не содержит подстроку (без учета регистра).-->

**Ответ на успешный запрос:** CSV-файл

{% endcut %}

{% cut "Получение уникальных значений полей" %}{#poluchenie-unikalnyh-znacheniy-poley}

```
GET /user_cabinet_reports/auth_journal/unique_values/<column_name>
```

* `column_name` - значение для получения:
    * `ip` - списка IP-адресов;
    * `country_name` - списка стран.

**Ответ на успешный запрос:** 

```json5
{
    "meta": [
        {
            "name": "string",
            "type": "string"
        },
        ...
    ],
    "data": [
        {"column_name": "string"},
        ...
    ],
    "rows": "integer",
    "rows_before_limit_at_least": "integer"
}
```

* `meta` - массив метаданных, описывающих поля запроса:
* `name` - имя поля данных;
* `type` - тип данных;
* `rows` - количество объектов `data`;
* `rows_before_limit_at_least` - общее количество строк (без учета `limit` и `offset`). Если в параметрах запроса отсутствуют `limit` и `offset`, поле `rows_before_limit_at_least` в ответе на запрос будет отсутствовать.

{% endcut %}
