2012-10-07 42 views
1

我们正在编写一个提供RESTful API的应用程序。该应用程序需要安全,但我不希望我的机制污染接口程序或API。通过代理实现SSL

我在想,如果一个代理可以帮助我们的情况,但由于我不是Web开发专家,我需要知道我的图片是否有意义。该系统的结构应该是以下:

  1. 服务器程序简单地导出API TCP端口,然而其可以由本地处理(结合于127.0.0.1)只访问上;

  2. 代理服务器管理SSL和身份验证:

    • 的URI和方法导出为他们,但是...
    • 只有认证用户,具有所需的能力,实际上可以调用他们和...
    • 通信必须在加密通道上运行

所以,我的问题是:

  1. 这是一个合理的方案?

  2. 什么是一个好的代理服务器,我可以运行这项工作?

  3. 这样做有什么缺点吗?

感谢您的帮助!

回答

2

看来,您可以通过使用代理的HTTPS 反向来实现您的一般情况。那里有多种实现。

一个流行的是Apache Httpd:它可以处理传入的HTTPS连接,身份验证(使用各种机制)和反向代理。

一个典型的场景,在这里你将有一个“普通” HTTP应用程序侦听localhost将有阿帕奇的httpd在它的前面和处理外部连接,其中:

  • mod_ssl处理SSL/TLS您的服务器的配置。
  • 其中一个mod_auth*模块处理认证(取决于您想要如何执行认证);这些应该能够将验证过的用户名(例如REMOTE_USER)导出到后端进行授权。
  • mod_proxy处理到后端应用程序的连接(例如,当应用程序服务器使用HTTP本身时,通过mod_proxy_http)。

只让具有所需功能的用户执行某些操作即为授权部分。这很难与主API分离,因为前端无法猜测您是如何定义“具备所需功能”的。这并不是说你必须将它与其他逻辑混杂在一起,但是授权系统需要知道你的API是如何工作的(即可能的操作是什么),因此它通常在主应用程序中最好实现。

+0

感谢:这正是我正在寻找的!另外我听说Apache需要一个非常复杂的配置,具有强大的学习曲线,并且可能在配置错误的情况下存在安全威胁。这是真的还是一个传奇? – Dacav

+1

如果您从未配置过Web服务器或完成任何Web开发,无论您使用Apache Httpd还是其他(例如Nginx),都肯定会有学习曲线。 Apache Httpd是相当知名和广泛记录的,在许多Linux发行版中也经常以明智的配置提供。配置错误会导致安全问题,但任何软件都是如此。似乎Apache Httpd在这方面比其他大多数人更困难。 – Bruno