我们正在编写一个提供RESTful API的应用程序。应用程序需要保护,但我不希望我的身份验证/加密机制污染接口程序和API。
我想知道代理是否可以在我们的案例中提供帮助,但由于我不是网络开发的专家,我需要知道我的图片是否有意义。系统的结构应如下:
服务器程序只是在TCP端口上导出API,但只能从本地进程访问(绑定到127.0.0.1
);
代理服务器管理SSL和身份验证:
所以,我的问题是:
这是一个合理的情况吗?
我可以为这份工作运行什么样的代理服务器?
这样做有什么缺点吗?
感谢您的帮助!
答案 0 :(得分:2)
似乎您可以通过使用HTTPS 反向代理来实现您的一般方案。那里有多种实现方式。
一个流行的是Apache Httpd:它可以处理传入的HTTPS连接,身份验证(使用各种机制)和反向代理。
在localhost
上监听“普通”HTTP应用程序的典型场景是在其前面安装Apache Httpd并处理外部连接,其中:
mod_ssl
处理服务器的SSL / TLS配置。mod_auth*
模块处理身份验证(取决于您希望如何执行身份验证);这些应该能够将经过身份验证的用户名(例如REMOTE_USER
)导出到后端进行授权。mod_proxy
处理与后端应用程序的连接(例如,当应用程序服务器使用HTTP本身时,通过mod_proxy_http
)。只允许具有执行某些操作所需功能的用户才是授权部分。这个很难与主API分离,因为前端无法猜测你如何定义“具有所需的功能”。这并不是说你必须将它与其他逻辑纠缠在一起,但是授权系统需要知道你的API是如何工作的(即可能的动作是什么),因此它通常最好在主应用程序中实现。