Назад | Перейти на главную страницу

Есть ли обратный прокси для интерфейсов REST, требующий утверждения?

В моей организации используется ряд служб, предоставляющих интерфейсы REST. Запросы POST, PUT или DELETE к такому интерфейсу могут быть разрушительными. Используя брандмауэры и аутентификацию пользователей, мы можем ограничить доступ авторизованным персоналом. Я хотел бы пойти еще дальше и потребовать одобрения от двух человек, прежде чем запрос будет обработан сервером приложений.

Есть ли обратный прокси-сервер, который я могу использовать между пользователем (ами) и сервером приложений, чтобы любой запрос GET немедленно перенаправлялся на сервер приложений. Однако любой запрос POST или PUT откладывается до утверждения на интерактивной веб-странице. (Рассматриваемые запросы обычно содержат тело JSON, а URL-адрес и HTTP-команда достаточно описательны.)

Итак, если Алиса

curl -XDELETE https://some.api/important/resource,

это не будет иметь эффекта, пока Боб не откроет веб-браузер и явно не подтвердит его. Алиса может использовать сценарий для выполнения операции, но Боб должен присутствовать в браузере и проверять запрос.

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

Тем не менее, я не могу представить себе какое-либо готовое / готовое программное обеспечение, которое будет делать это, поскольку это немного странное, если не в некотором роде, обоснованное требование.

Однако вы можете перехватывать запросы с помощью методов, вызывающих озабоченность, и направлять их в сценарий, который затем сохраняет их где-нибудь (SQL, файл, Redis и т. Д.). Эти запросы должны, вероятно, возвращать общий объект JSON, в котором говорится, что их запрос был поставлен в очередь для утверждения, чтобы пользователи не думали, что они потерпели неудачу.

Затем администратор (-и) загружает (-я) другую страницу (-и) со списком очереди запросов и утверждает их по мере необходимости. Утвержденные запросы могут быть немедленно повторно отправлены сеансом Боба, или они могут быть отправлены рабочему процессу, который выполняет их в фоновом режиме.

Вы можете сделать это в Apache. Что-то вроде (запись по памяти) должно делать это:

<Location /api>
  AuthType Basic
  AuthName "API authentication"
  AuthUserFile /path/to/htusers
  AuthGroupFile  /path/to/htgroups

  Require valid-user

  # Write user group
  <Limit DELETE>
    Require group superusers
  </Limit>
</Location>

Это позволит любому пользователю в вашем файле htusers запускать GET, POST, PUT и т. Д. Однако DELETE будет ограничено для всех в группе "суперпользователей".