eXist-DB настраивает безопасность для запросов REST / PUT - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть простая контактная форма на моем сайте, которая успешно выдает HTTP PUT для моего eXist-db.

Каждый PUT создает уникальный XML-документ, например, так: http://medieval-inquisition.huma-num.fr/exist/rest/db/apps/deheresi/comm/some_unique_name.xml

При этом сервер запрашивает пароль.

Каковы рекомендации по настройке HTTP PUT для публичной записи, но не для чтения / редактирования?

Это просто вопрос создания уникального пользователя / пароля только для этой операции REST, котораяразрешает только запись доступа к этой коллекции?

Есть ли другие соображения?

Есть ли определенный, рекомендуемый подход eXist-db к этому?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 декабря 2018

Таким образом, у вас есть несколько опций:

  1. Используйте разрешения Коллекции, например, владелец / группа / режим / acl, и используйте пользователя или группу, которая аутентифицируется в HTTPPUT для управления тем, кто может писать в коллекцию.

    Режим rwx для коллекции:

    1. r (чтение) позволяет пользователю / группе просматривать содержимоеКоллекция
    2. w (запись) позволяет пользователю / группе записывать в Коллекцию;Обратите внимание, что это включает в себя удаление документов!
    3. x (выполнить) позволяет пользователю / группе открывать коллекцию, без 'x' ни r, ни w не будут разрешены.

    Однако, поскольку Коллекции предоставляются через HTTP REST API, если вы не отключите API REST, вы, скорее всего, не захотите предоставить публичному пользователю w доступ к своей Коллекции.Как они могли бы тогда просто удалить HTTP-документ (ы) в Коллекции.

  2. Вместо этого вы, вероятно, захотите публичного пользователя, который имеет s (set-uid + execute) доступ к XQueryОсновной модуль предоставляется через REST API или конечную точку RESTXQ.Этот основной модуль при доступе через HTTP PUT будет принимать эффективный идентификатор пользователя и записывать в коллекцию.Преимущества HTTP PUT для основного модуля XQuery, а не для коллекции:

    1. , что вы можете использовать основной модуль XQuery для игнорирования HTTP DELETE / POST / GET и т. Д., Что не позволяет пользователюнепосредственное изменение коллекции.
    2. Вам не нужно предоставлять учетные данные привилегированного пользователя за пределами eXist-db.
    3. Основной модуль XQuery становится специфичным для задачи и поэтому имеет гораздо меньшую атакуобслуживает и действует как ограниченная точка контроля доступа.

    В главном модуле XQuery вы также, вероятно, захотите установить определенные разрешения для создаваемых вами документов.

...