2013-02-22 46 views
1

我正在構建一個API,並且在使用前端框架(如Backbone.js)時處理身份驗證時遇到了問題。使用Backbone的外部私有API身份驗證

我有一個API服務器負責基於RESTful Web請求返回和修改數據。

我有另一個應用程序服務器是Backbone應用程序。我希望此應用程序直接與我的API服務器連接,因此請設置整個項目,以便此應用程序服務器可以向API服務器發出跨域AJAX請求。

有些API路由我不希望未經授權的方獲得訪問權限。例如,我有一個路徑/用戶列出我的應用程序的所有用戶。我稍後需要此路徑來管理管理功能,但我不希望它公開提供給我的應用服務器。

什麼是一個很好的身份驗證方案? OAuth將無法工作,因爲祕密令牌將暴露在前端。之後,我有點卡住了我的選擇。有沒有人有任何建議前進?

回答

3

在這些情況下,我使用技術的組合。

- 老好人基於Cookie的身份驗證

作爲主幹應用程序總是會在瀏覽器中使用,瀏覽器都內置了cookie支持,我建議你應該接受在服務器上的基於Cookie的會話側。所有與auth有關的東西都將由瀏覽器處理,您不必擔心存儲密鑰等。在許多庫(如iPhone中的NSURL)和框架(如PhoneGap/Trigger)上都支持cookies,所以您可以支持所有與litte工作的客戶。

- 普通API密鑰

對於第三方,我使用基於API密鑰驗證。您提供usernamepassword,我提供鑰匙。您每次在HTTP標頭中發送所有後續請求的密鑰。我使用密鑰來識別您,然後相應地允許/禁止操作。

我認爲一旦你可以驗證用戶(wait..who是你嗎?),那麼你可以設置權限(你說Micheal?......好吧,你可以訪問/users

也看看在我的backbone-parse plugin有關如何通過外部API服務驗證用戶的想法#shamelessplug