2012-02-06 95 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公開。