是否有需要批准的 REST 接口反向代理?

是否有需要批准的 REST 接口反向代理?

我的组织使用了许多公开 REST 接口的服务。对此类接口的 POST、PUT 或 DELETE 请求可能会造成破坏。使用防火墙和用户身份验证,我们可以将访问权限限制为授权人员。我想更进一步,要求在应用服务器处理请求之前先获得两个人的批准。

是否有一个反向代理可以在用户和应用服务器之间使用,以便任何 GET 请求都可以立即转发到应用服务器。但是,任何 POST 或 PUT 请求都会被延迟,直到在交互式网页上获得批准。(相关请求通常包含 JSON 主体,URL 和 HTTP 动词非常具有描述性。)

所以,如果爱丽丝

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

除非 Bob 打开 Web 浏览器并明确表示同意,否则此操作不会生效。Alice 可以使用脚本来执行此操作,但 Bob 必须在浏览器旁并验证请求。

答案1

首先,这听起来很像是试图用技术来解决非技术问题,我对此一直很担心。

话虽如此,我无法想象任何现成的/开箱即用的软件可以做到这一点,因为这是一个有点奇怪的,即使不是有点有效的要求。

但是,您可以做的是拦截具有相关方法的请求,并将其转发到脚本,然后将其保存在某个地方(SQL、文件、Redis 等)。这些请求应该返回一个通用 JSON 对象,表明他们的请求已排队等待批准,因此用户不会认为他们失败了。

然后,管理用户加载另一个列出请求队列的页面,并根据需要批准这些请求。已批准的请求可立即由 Bob 的会话重新提交,也可以将它们分派到在后台执行这些请求的工作进程。

答案2

您可以在 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 仅限于“超级用户”组中的任何人

相关内容