2012-02-06 98 views
4

我正在创建我的第一个API并使用Ruby on Rails。 API将严格地服务器到服务器。我已经做了很多reading关于保护这样的API的方法,并决定使用https可能是最简单的方法,而不是Oauth。使用https保护Rails API

附加信息:

  • API是非常简单和只读
  • 我提供的数据是不便宜,我需要显示我们的数据供应商和合作伙伴的API是安全的,他们的数据将被防止盗窃。这是我需要担保的唯一原因。

我最初的计划是简单地使用将通过https发送的私钥。我不需要担心客户共享此密钥,因为他们是根据使用情况进行计费的。

我的问题是你如何去执行在客户端服务器上使用https?除了需要使用https协议的API路由之外,还有其他一些事情需要在我的结尾完成吗?

回答

7

HTTPS只做两件事: *给你一个温暖的模糊感觉,你正在与正确的服务器通信 *使用加密来防止窃听和篡改。

这是的不是限制访问您的API。对于敏感数据使用HTTPS是必须的,所以使用它。您可以设置您的前端服务器(例如nginx)以独占使用SSL(例如,不要配置端口80/HTTP)。在这里阅读更多信息:http://ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn-rails

然后,您将希望客户端进行身份验证,以便您可以检查他们是否正确接收您的数据。你可以在这里使用OAuth,但是因为我收集的只有一个客户端,所以这可能是矫枉过正的。

您可以使用的最简单的身份验证形式是需要身份验证令牌。每个请求都必须包含此api标记,您可以验证服务器端。您还可以使用它记录有关使用情况的指标。

因此,基本上,每个请求都需要一个API密钥配置您的服务器,以便您的API仅通过HTTPS公开。