Веб-адаптер Oz Liveness

Системные требования

  • Любая операционная система, поддерживаемая Docker, и установленный на ней версия Docker.
  • CPU: 4x cores
  • RAM: 8Gb
  • Disk: 40Gb

Дополнительные требования

  • Локальная установка nginx. Ниже приведена рекомендуемая конфигурация.
  • API Oz и сервисы Oz Bio, установленные в вашем сетевом кластере.
  • Доменное имя, связанное с текущим IP-адресом.
  • SSL-сертификат, связанный с доменным именем.
  • Доступный внешний порт 443 для HTTPS-доступа.
  • Все шаги по подготовке и настройке конфигурации выполняются от имени привилегированного пользователя.

Пошаговое описание установки

Вход в Docker Hub

Получите персональный токен Docker Hub для входа в частный репозиторий.


  docker login -u ozcustomer -p your_token_here docker.io

Скачайте и запустите образ последней версии продукта


  docker pull ozforensics/oz-webliveness

Подготовьте файлы конфигурации и каталоги

Каталоги

Создайте корневой каталог для данных в своей системе. Здесь и далее мы будем исходить из того, что используется каталог по умолчанию /opt/oz.


  mkdir -p /opt/oz/web_adapter/session_data
  chown -R 33:33 /opt/oz/web_adapter/session_data

Внимание! Необходимо следить за каталогом session_data, объем которого может расти неограниченно, при каждом запросе на анализ увеличиваясь на 20–50 Мб. При желании вы можете изменить место сохранения тома, указав другую команду для запуска Docker:

Файлы

Создайте файл /opt/oz/web_adapter/index.html с приведенным ниже содержимым. Это образец страницы с использованием плагина, в рабочей среде содержимое можно изменить.

HTML


    <!DOCTYPE html>
    <html>
    <head>
        <title>Oz Liveness WEB Example</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="/plugin/ozliveness.css" />
        <script src="/plugin_liveness.php?lang=en"></script>
    </head>

    <body>
        <div>
            <h1>Example website</h1>
            <button id="example_button">Example button</button>
        </div>

        <script>
            document.getElementById('example_button').addEventListener('click', function()
            {
                OzLiveness.open({
                    lang: 'en',
                    action: ['photo_id_front', 'photo_id_back', 'video_selfie_zoom_in'],
                    on_complete: function(result)
                    {
                        console.log(result);
                    }
                });
            });
        </script>
    </body>
    </html>

Примечание. Содержимое этого файла можно изменить на простой перенаправитель при помощи приведенного ниже текста. Ни при каких обстоятельствах не удаляйте этот файл, потому что он будет заменен версией по умолчанию из контейнера. Если вы захотите заменить этот файл другим, потребуется перезапустить контейнер.

HTML


  <html>
    <head>
      <meta http-equiv="refresh" content="1;URL=https://your-domain-name/" />
    </head>
  </html>

Создайте файл /opt/oz/web_adapter/app_config.json с настройками, приведенными в образце ниже. Следуйте указаниям документации.


  {
      "api_url": "https://api.oz-services.ru/api/",
      "api_token": "",
      "api_use_token": "client",
      "lang_allow": [ "ru", "en" ],
      "lang_default": "en",
      "video_actions_list":
      [
          "video_selfie_left",
          "video_selfie_right",
          "video_selfie_down",
          "video_selfie_high",
          "video_selfie_zoom_in",
          "video_selfie_zoom_out",
          "video_selfie_scan",
          "video_selfie_smile",
          "video_selfie_eyes",
          "video_selfie_blank"
      ],
      "photo_actions_list":
      [
          "photo_id_front",
          "photo_id_back",
          "photo_doc_custom"
      ],
      "actions_default_importance": false,
      "actions_default":
      {
          "video_count": 1,
          "photo_front": true,
          "photo_back": true
      },
      "analyses":
      {
          "quality": true,
          "biometry": true,
          "documents": true
      },
      "extract_best_shot": false,
      "delete_old_sessions": true,
      "delete_old_sessions_offset_minutes": 120,
      "result_mode": "status",
      "result_codes":
      {
      	"0-1": "Unable to save session configuration.",
      	"0-2": "Unable to load session configuration.",
      	"0-3": "Session configuration not found.",
      	"0-4": "Session id not found.",
      	"0-5": "Session remote user is not valid.",
      	"0-6": "Session is out of date.",
          "0-7": "API token not found.",

          "1-1": "Found no images for processing.",
      	  "1-2": "Found no valid data for processing.",
          "1-3": "Unable to create temp folder for uploaded images.",
          "1-4": "Image uploaded for processing must be a jpeg.",
      	  "1-5": "Unable to decode images for making video.",
          "1-6": "Unable to create video from images.",
          "1-7": "Analyse folder create curl error.",
          "1-8": "Analyse folder create internal error.",
          "1-9": "Unable to start video curl analyse.",
          "1-10": "Unable to start video internal analyse.",
          "1-11": "Init api request error - corrupted session configuration.",
          "1-12": "Quality analyse has not been started.",
          "1-13": "Analyse folder creation did not return a folder id.",
          "1-14": "Analyse is not started.",
          "1-15": "Media files not transmited to API.",
          "1-16": "Media files transmited with errors.",
          "1-17": "Not found any analyse to start.",
          "1-18": "Default actions not found.",
          "1-19": "Requested not valid action.",
          "1-20": "Requested not all actions.",

          "2-1": "Video analyse not started.",
          "2-2": "Video analyse error.",
          "2-3": "Video analyse folder id not found.",
          "2-4": "Video analyse id not found.",
          "2-5": "Analyse check curl error.",
          "2-6": "Analyse check internal error.",
          "2-7": "Analyse check returned an empty answer.",
          "2-8": "Analyse check did not found requested analyse result."
      }
  }

Запуск контейнера


  docker run -d --name oz-webliveness --restart unless-stopped \
  -v /opt/oz/web_adapter/app_config.json:/var/www/html/core/app_config.json \
  -v /opt/oz/web_adapter/index.html:/var/www/html/index.html \
  -v /opt/oz/web_adapter/session_data:/var/www/html/core/session_data \
  -p 80:80 -d ozforensics/oz-webliveness


Дополнительные инструкции

Пример конфигурации хоста nginx

Вставьте приведенный ниже блок в раздел server файла nginx.conf.


  server {
    ....
    location / {
        client_max_body_size 100M;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Request-URI $request;
        proxy_set_header X-Original-Request $request_uri;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://localhost:80;
    }
  }

Проверка веб-адаптера и веб-плагина

  1. Подготовьте машину с установленным API Oz и учетными данными для входа в API. Вам требуется учетная запись с ролью CLIENT_ADMIN.
  2. В параметре api_url укажите «https://oz-api-domain-name/api/».
  3. Получите временный токен при помощи приведенного ниже скрипта и укажите его в параметре api_token.
  4. Укажите в параметре api_use_token значение «config».
  5. Перезапустите контейнер: перезапустите oz-webliveness в Docker.
  6. Откройте в браузере адрес: https://your-server-name/index.html. Обратите внимание, что в соответствии с политикой для веб-браузеров использование веб-камеры в браузере разрешено только при подключении по протоколу HTTPS.

Получите временный токен для ваших учетных данных API при помощи скрипта:


  curl -X POST \
    https://oz-api-domain-name/api/authorize/auth \
    -d '{
    "credentials": {
      "email": "demo@ozforensics.com",
      "password": "123456"
    }
  }'

В обычном случае будет возвращен JSON-ответ со значением access_token.

Примечание. Рекомендуется добавить отдельного пользователя с атрибутом SERVICE_ACCOUNT и ролью CLIENT_ADMIN в веб-консоли Oz и дать ему разрешение на использование токена.