Это старая версия документа!
Das REST-Interface ist in „benno-rest“ umgesetzt und implementiert das Benno MailArchiv REST API.
Фронтенд для поиска в Benno MailArchiv не работает напрямую с индексом Lucene, а отправляет HTTP-запросы на REST-интерфейс, который выполняет поиск с помощью Lucene.
Конфигурация путей к индексу и репозиторию считывается из файла "/etc/benno/benno.xml". Настройки встроенного HTTP-сервера REST-интерфейса хранятся в файле "/etc/benno/jetty.xml" (см. также: Benno REST с SSL-шифрованием ).
Этот интерфейс, как правило, обладает следующими свойствами:
Доступ пользователей к 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
Alle archivierten E-Mails haben eine eindeutige ID, über die der direkte Zugriff auf die jeweilige E-Mail möglich ist. Ähnlich wie das Shared Secret stellt diese eindeutige ID einen sicherheitsrelevanten Aspekt dar.
Поскольку идентификатор однозначно идентифицирует конкретное электронное письмо в архиве, этот идентификатор, как и общий секретный ключ, не следует передавать пользователю напрямую! Знание идентификатора позволяет получить доступ к соответствующему электронному письму в архиве.
Примечание: В веб-приложении Benno MailArchiv фактические идентификаторы писем в списке результатов поиска скрыты от пользователя путем переназначения их временным идентификаторам в теневой таблице в течение соответствующей сессии. Если пользователь видит идентификаторы писем в списке результатов поиска, они бесполезны, поскольку не соответствуют исходным идентификаторам заархивированных писем. Поэтому любая прямая попытка доступа к письму с таким временным идентификатором завершится неудачей.
Разумеется, разработчики программного обеспечения и программисты, использующие этот API , могут игнорировать эти предупреждения, связанные с безопасностью; однако мы рекомендуем обращать на них особое внимание, если API предназначен для интеграции функций Benno MailArchiv в веб-приложения, чтобы разработать устойчиво безопасное и бескомпромиссное решение.
Веб-интерфейс реализует клиент для REST API . Этот пакет также включает в себя клиент командной строки ( benno-client ), реализованный на Perl, который может служить простым примером и использоваться для тестирования при разработке собственного интерфейса.