Интеграция веб-компоненты
Веб-компонента — это инструмент, который позволяет легко интегрировать работу с BAF в веб-интерфейс. Компонента функционирует через интеграцию, которая создается на стороне сервера.
Интеграция — это точка входа для веб-компоненты, которая определяет, с какими настройками и данными компонента будет работать. Без интеграции работа компоненты невозможна.
Интеграции привязаны к аккаунтам. Один аккаунт может иметь множество интеграций, но одна интеграция может работать только в одном аккаунте.
Интеграции не зависят друг от друга. Т.е. на одном аккаунте возможно создать две интеграции с разными настройками и связать с ними разные компоненты. Таким образом, можно сделать так, чтобы одна компонента отправляла биометрические данные с записанными видео, а другая нет.
Веб-компонента может работать только с одной интеграцией. Для замены интеграции требуется перезапуск компоненты с новыми параметрами.
Для обновления параметров веб-компоненты достаточно обновить параметры интеграции. Веб-компоненты подтягивают настройки в начале процесса взаимодействия с пользователем, соответственно, компоненты, успевшие подтянуть старые настройки требуют перезапуска процесса взаимодействия с пользователем (обновления страницы в случае интеграции в веб) для обновления настроек.
Для получения настроек веб-компоненты, она должна отправлять запрос с домена, указанного в настройках интеграции.
Домен проверяется по заголовкам запроса в следующим порядке:
Origin. Полное совпадение с доменом в интеграции, включая схему.
Referrer. Аналогично origin, только игнорируется последняя косая черта.
Host. Проверяется совпадение только домена и порта через двоеточие из настроек интеграции.
Например, если есть заголовок Origin и Referrer, проверяться будет только Origin, а Referrer будет игнорироваться. При этом на один и тот же домен можно создать множество интеграций.
Управление интеграциями доступно только в дашборде.
Аутентификация веб-компоненты
Для защиты API, с которыми взаимодействует компонента, в системе предусмотрено два режима аутентификации. Сами настройки аутентификации находятся на странице «Веб-компоненты».
Режим IntegrationId
В этом режиме компонента использует идентификатор интеграции для аутентификации. Данный способ предусмотрен для обратной совместимости и не рекомендован к использованию на новых версиях веб-компоненты. Если злоумышленник каким-либо образом получит ID интеграции, он сможет беспрепятственно обращаться к API. Поскольку идентификатор интеграции легко доступен для просмотра в сетевых запросах браузера, этот режим не обеспечивает должного уровня безопасности.
Режим JWT
В этом режиме компонента аутентифицируется с помощью краткоживущего JWT-токена. Основная идея заключается в том, что токен генерируется интегратором непосредственно перед запуском процесса валидации через веб-компоненту. Предполагается, что сама генерация токена защищена каким-либо дополнительным фактором. Например, пользователь подтверждает свой номер телефона, после чего интегратор генерирует JWT и передает его в компоненту. Если токен можно будет генерировать без проверки каких-либо факторов, его основная цель утрачивается — злоумышленник получит доступ к API через сгенерированный для себя токен.
Для генерации токена предусмотрено отдельное API, защищенное PK-токеном.
Дополнительно существует возможность защитить API генерации JWT-токена с помощью проверки секрета клиента. В данном контексте под клиентом понимается программа, которая инициализирует компоненту и взаимодействует с сервером. Например, браузер, мобильное приложение или программа внутри картомата.
Для работы проверки секрета клиент должен считаться конфиденциальным. Это означает, что секрет, встроенный в клиент, невозможно извлечь извне.
Браузер, запущенный на пользовательском устройстве, не может считаться конфиденциальным — пользователь имеет полный доступ к данным браузера. В то же время браузер, работающий внутри картомата, позволяет надежно скрыть секрет от злоумышленника.
При включении режима проверки секрета API для генерации токена начинает требовать этот секрет на вход. Каждая интеграция содержит свой набор секретов: при генерации токена переданный секрет должен совпадать с одним из секретов, заданных для данной компоненты.