Авторизация

Для доступа к конечным точкам (endpoints) API необходимо в заголовке HTTP-запроса Authorization предоставить билет (ticket) Kerberos.

Чтобы получить билет (ticket) Kerberos, выполните шаги:

  1. Убедитесь, что на машине, с которой вы будете выполнять вызов API-методов, настроено окружение для аутентификации Kerberos — установлен и настроен Kerberos-клиент.

  1. Получите билет (ticket) Kerberos, используя команду kinit.

    kinit -v <имя пользователя>@<имя домена>

    Пример команды:

    kinit -v vivanov@LCM.TERRA.INNO.TECH

    Пример вывода:

    Placing tickets for `vivanov@LCM.TERRA.INNO.TECH` in cache `API:AS8FAF0V-AS4S-V39T-T4ZE-12DE34N4N77JA`
  2. Для проверки валидности полученного билета (ticket) отобразите список кэшированных билетов (tickets) Kerberos, выполнив команду klist.

    Пример вывода:

    Credentials cache: API:EC59A7DE-43A4-43E3-A349-56F92E31A71D
            Principal: aarshavin@LCM.TERRA.INNO.TECH
    
      Issued                Expires               Principal
    Feb 13 12:51:40 2024  Feb 13 22:51:40 2024  krbtgt/LCM.TERRA.INNO.TECH@LCM.TERRA.INNO.TECH
    Feb 13 12:51:47 2024  Feb 13 22:51:40 2024  HTTP/staging-lcm.terra.inno.tech@LCM.TERRA.INNO.TECHH

Чтобы подставить значение полученного билета (ticket) в заголовок Authorization при вызове API-метода, используйте утилиту cURL.

Ниже рассмотрен вызов API-метода на примере getConfigurationList — получение списка конфигураций:

curl -x POST --location "https://"staging-lcm-terra-inno-tech/api/v1/configurations/search"
-Н "Content-type: application/json" --negotiate --user : | jq

Где:

  • curl — утилита командной строки, которая позволяет отправлять HTTP-запросы на сервер и получать ответы;

  • -x POST — флаг, указывающий метод запроса, который используется для отправки данных на сервер;

  • --location — флаг, указывающий curl на необходимость следовать перенаправлениям, если сервер возвращает HTTP-код 3xx;

  • https://staging-rt-terra-inno-tech — URL-адрес сервера, на который будет отправлен запрос;

  • -H "Content-type: application/json" — флаг, который добавляет заголовок к запросу. В данном примере заголовок Content-type устанавливается в значение application/json, что указывает на то, что тело запроса будет передано в формате JSON;

  • --negotiate — флаг, указывающий на использование аутентификации по протоколу Kerberos (Negotiate);

  • --user : — флаг, который определяет имя пользователя для аутентификации. Двоеточие в сочетании с флагом --negotiate указывает curl, что необходимо получить билет (ticket) для указанного хоста от имени данного пользователя и подставить в заголовок Authorization.

Пример ответа:

{
  "configurations": [
    {
      "id": 5467,
      "displayName": "Яндекс браузер",
      "description": "Браузер от компании Яндекс",
      "fullDescription": "Браузер от компании Яндекс.(...)",
      "guide": "Если вы не сделали его основным, при его запуске может появляться окно Сделать этот браузер основным?  Чтобы окно больше не показывалось, включите опцию Больше не спрашивать и нажмите Не сейчас.",
      "isApplication": true,
      "tags": [
        "Браузер"
      ],
      "categories": [
        "Сеть"
      ],
      "createdAt": "2023-08-27T09:37:40.000Z",
      "updatedAt": "2023-08-27T09:37:40.000Z",
      "createdBy": "vivanov@domain.local",
      "updatedBy": "vivanov@domain.local",
      "iconPath": "icons/123321-7cb06ef0-87ab-4a60-b20e-33c2d9725a09-open-office.png",
      "imagesPaths": [
        "images/123321-7cb06ef0-87ab-4a60-b20e-33c2d9725a09-open-office-screen03.jpg"
      ],
      "defaultVersion": 1234,
      "isActive": true
    }
  ],
  "meta": {
    "totalRecords": 1729,
    "pageSize": 20,
    "totalPages": 87,
    "currentPage": 2,
    "hasNext": true,
    "hasPrev": true
  }
}

Если при установке продукта в конфигурационном файле бэкенда application.properties каталога /opt/inno-lcm-core задан параметр lcm.authorization.user-groups-white-list, доступ будет разрешен только пользователям, входящим в указанные группы.