我的组织采用了许多公开REST接口的服务。 POST,PUT或DELETE请求到这样的接口可能是破坏性的。 使用防火墙和用户authentication,我们可以限制授权人员。 我想更进一步,需要两个人的批准,然后再由应用服务器处理请求。
是否有一个反向代理,我可以在用户和应用程序服务器之间使用,以便任何GET请求立即转发到应用程序服务器。 但是,任何POST或PUT请求都会延迟到交互式网页上被批准为止。 (有问题的请求通常包含一个JSON正文,URL和HTTP动词相当具有描述性。)
所以,如果爱丽丝呢
curl -XDELETE https://some.api/important/resource,
直到Bob打开一个Web浏览器并明确地确定它才会有效果。 Alice可以使用脚本来执行操作,但Bob必须在浏览器中出现并validation请求。
首先,这听起来就像试图用技术来解决一个我总是厌倦的非技术问题。
也就是说,我无法想象任何现成的软件都可以做到这一点,因为这是一个有点奇怪的要求,即使不是有些有效的要求。
但是你可以做的是用关心的方法拦截请求,然后把它们保存到一个脚本中,然后把它们保存到某个地方(SQL,文件,Redis等)。 这些请求应该返回一个通用的JSON对象,这个对象声明他们的请求已经排队等待批准,所以用户不会认为他们已经失败了。
pipe理用户然后加载列出请求队列的另一个页面,并根据需要批准它们。 批准的请求可以立即由Bob会话重新提交,也可以派发给在后台执行的工作进程。
你可以在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将仅限于“超级用户”组中的任何人