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

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


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

Это старая версия документа!


REST-интерфейс

Das Web-Frontend von Benno MailArchiv arbeitet nicht direkt auf dem Lucene-Index, sondern setzt HTTP Requests an das REST-Interface ab, welches die Suche mit Hilfe von Lucene durchführt. Das REST-Interface ist in „benno-rest“ umgesetzt und implementiert das Benno MailArchiv REST API.

Конфигурация путей к индексу и репозиторию считывается из файла "/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 необходимо учитывать следующие аспекты безопасности.

Shared Secret zur Kommunikation zwischen Frontend und Backend

Общий секретный ключ — это «ключ» к доступу к серверной части 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, который может служить простым примером и использоваться для тестирования при разработке собственного интерфейса.

rest_interface.1483939830.txt.gz · Zuletzt geändert: 2017/01/09 05:30 von lwsystems