Инструменты пользователя

Инструменты веб-сайта


рест-интерфейс

REST-интерфейс

REST-интерфейс реализован в "benno-rest" и использует REST API .

Фронтенды

  • Benno Web — веб-интерфейс для прямого взаимодействия с пользователем
  • rest.php — оболочка для REST API с аутентификацией и контролем доступа.

Фронтенд для поиска в Benno MailArchiv не работает напрямую с индексом Lucene, а отправляет HTTP-запросы на REST-интерфейс, который выполняет поиск с помощью Lucene.

конфигурация

Конфигурация путей к индексу и репозиторию считывается из файла "/etc/benno/benno.xml". Настройки встроенного HTTP-сервера REST-интерфейса хранятся в файле "/etc/benno/jetty.xml" (см. также: Benno REST с SSL-шифрованием ).

Этот интерфейс, как правило, обладает следующими свойствами:

  • Возвращаемые значения вызовов функций передаются в формате JSON (например, список электронных писем, найденных в ответ на поисковый запрос, возвращается в виде списка объектов JSON).
  • Возвращаемые значения закодированы в UTF-8.
  • Полученное из архива или запрошенное из него электронное письмо может быть в формате JSON (т.е. в виде массива объектов JSON) или в "сыром" формате (т.е., RFC 822 или RFC 2822, в виде обычного текста).
  • запросы API- серверу Benno MailArchiv возможны только в том случае, если вызывающая программа прошла аутентификацию на сервере. Аутентификация выполняется с использованием базовой HTTP-аутентификации. Подробности см., например: http://de.wikipedia.org/wiki/HTTP-Authentifizierung и далее: http://tools.ietf.org/html/rfc2617
  • Все API к серверу Benno MailArchiv должны выполняться в виде HTTP POST-запросов.

Доступ пользователей к Benno MailArchiv осуществляется исключительно через API . Это означает, что API не предусмотрен графический интерфейс пользователя, получает доступ к Benno MailArchiv исключительно через этот API .

На следующем рисунке показана архитектура Benno MailArchiv и интеграция API в систему:

Как показано на приведенной выше диаграмме, Benno MailArchiv реализован в многоуровневой архитектуре. Бэкенд Benno MailArchiv (или «ядро») логически отделен от фронтенда («контекст пользовательского интерфейса» или API ). Такая архитектура позволяет, в принципе, прозрачно функционировать обоим контекстам (бэкенду и фронтенду) в сети на разных серверах.

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

Аспекты безопасности

API Benno MailArchiv необходимо учитывать следующие аспекты безопасности.

Общий секрет

Общий секретный ключ — это «ключ» к доступу к серверной части Benno MailArchiv через интерфейс пользователя или API . Если общий секретный ключ попадёт в чужие руки, серверная часть (и, следовательно, все заархивированные электронные письма) перестанет быть эффективно защищённой от несанкционированного доступа. Сам общий секретный ключ, конечно же, можно легко изменить в любое время.

Аутентификация с использованием общего секрета выполняется (как указано выше) по протоколу HTTP Basic Auth.

передавать URL-адресе веб-приложений, работающих в браузере Общий секретный ключ виден в незашифрованном виде и может легко попасть в чужие руки! В конфигурации по умолчанию все запросы обрабатываются через устройство обратной связи, поэтому данные по сети не передаются. Однако, если конфигурация предполагает разделение фронтенда и REST-бэкенда, связь с benno-rest должна быть зашифрована. Конфигурация SSL для демона benno-rest описана здесь .

Мы рекомендуем разработать систему аутентификации для REST API таким образом, чтобы пользователь не имел возможности просматривать или изменять его (например, через URL ). Это следует реализовать с помощью прокси или аналогичного шаблона проектирования. В частности, этого легко можно добиться, например, с помощью HTTP-сервера, работающего с CGI-скриптом.

Примечание: Аутентификация HTTP Basic Auth основана на двух факторах: «Имя пользователя» и «Пароль». Имя пользователя всегда должно быть «benno2». Пароль — это общий секретный ключ, хранящийся на сервере.

Поисковый запрос достигает

API (в отличие от веб-приложения Benno MailArchiv!) имеет неограниченный доступ ко всем электронным письмам в архиве. Это означает, что каждый поисковый запрос возвращает результаты независимо от прав пользователя, настроенных в веб-приложении !

Используя соответствующие параметры фильтра, поисковый запрос можно ограничить определенными электронными письмами (например, письмами от конкретного пользователя). Эти параметры фильтра необходимо указать при вызове API

API не имеет доступа к системе управления пользователями Benno MailArchiv в веб-приложении! Реализация фильтрации или ограничений доступа должна осуществляться вызывающей программой, использующей этот API

Доступ к электронным письмам осуществляется по их уникальному идентификатору в архиве

Все заархивированные электронные письма имеют уникальный идентификатор ( BennoID ), который обеспечивает прямой доступ к каждому отдельному письму. Подобно общему секрету, этот уникальный идентификатор представляет собой важный аспект безопасности.

Поскольку идентификатор однозначно идентифицирует конкретное электронное письмо в архиве, этот идентификатор, как и общий секретный ключ, не следует передавать пользователю напрямую! Знание идентификатора позволяет получить доступ к соответствующему электронному письму в архиве.

Примечание: В веб-приложении Benno MailArchiv фактические идентификаторы писем в списке результатов поиска скрыты от пользователя путем переназначения их временным идентификаторам в теневой таблице в течение соответствующей сессии. Если пользователь видит идентификаторы писем в списке результатов поиска, они бесполезны, поскольку не соответствуют исходным идентификаторам заархивированных писем. Поэтому любая прямая попытка доступа к письму с таким временным идентификатором завершится неудачей.

Загрузка электронных писем с использованием BennoID

Идентификатор BennoID состоит из идентификатора контейнера и контрольной суммы электронного письма. Эти два токена разделены двоеточием. BennoID определяется как путь относительно каталога репозитория контейнера.

Контейнер настраивается в конфигурационном файле benno.xml следующим образом:


   > 
     > 
     />  > /srv/benno/archive/repo 
     >  > 3 
     >  > 2 
     >  > gzip 
   > 
 >  >

В этой стандартной конфигурации в окне будет отображаться год ( ) показано. 1)

Контрольная сумма BennoID хранится в 3 подкаталогах ( ) длиной в 2 символа ( ) подразделены.

Электронное письмо с идентификатором BennoID 2021:A430E04B02D18112964BF2956BB52A4DEF928266DB59E0E9A1E94FD52FD0E05E00 найти по пути 2021/A4/30/E0/4B02D18112964BF2956BB52A4DEF928266DB59E0E9A1E94FD52FD0E05E00.gz в каталоге репозитория /srv/benno/archive/repo .

В заключение

Разумеется, разработчики программного обеспечения и программисты, использующие этот API , могут игнорировать эти предупреждения, связанные с безопасностью; однако мы рекомендуем обращать на них особое внимание, если API предназначен для интеграции функций Benno MailArchiv в веб-приложения, чтобы разработать устойчиво безопасное и бескомпромиссное решение.

Внедрение клиентских решений

Веб-интерфейс реализует клиент для REST API . Этот пакет также включает в себя клиент командной строки ( benno-client ), реализованный на Perl, который может служить простым примером и использоваться для тестирования при разработке собственного интерфейса.

1)
Benno MaiArchiv определяет имя подкаталога для бокса из файла boxstate.xml . Этот файл находится в каталоге репозитория и создается автоматически. Его не следует изменять вручную.
Имя каталога обычно совпадает с идентификатором бокса (т.е., годом).
rest_interface.txt Последнее изменение: 21.12.2021 09:03 lwsystems