2013-06-20 153 views
0

這裏客戶端認證方式登錄瓶一起的情況是:與RESTful服務

我們使用燒瓶在網站服務器web應用程序development.Also,我們舉辦一個RESTful服務。我們使用Flask-login作爲身份驗證工具,用於Web應用程序訪問和RESTful服務(從瀏覽器訪問Restful服務)。

後來,我們發現,我們需要,也,訪問來自客戶端調用(蟒蛇)的REST風格,所以沒有會話和餅乾等,這爲我們提供了有關RESTful服務的當前認證頭疼。

在網絡上,存在大量的方法來保護來自客戶端調用的RESTful服務。但對於他們來說,與我們目前的Flask登錄工具一起生活似乎並不是一個簡單的方法,因此我們不需要更改我們的Web應用程序。

因此,這裏有一個問題:

有沒有一種簡單的方法(框架),所以RESTful服務可以支持同時多種驗證方法(協議)。這是一個很好的做法嗎?

非常感謝!

回答

0

所以,你已經正式遇到了現代Web開發中最困難的問題之一(我的愚見):Web認證。

下面是它背後的理論(我會在短時間內回答你的問題)。

當您構建的複雜應用程序擁有超過一些用戶時,特別是如果您正在構建同時擁有網站和API服務的應用程序時,無論您身在何處,都會碰到身份驗證問題,重新做。

解決這些問題的理想方法是在您的網絡上進行獨立的身份驗證服務。某種內部API,專門處理用戶創建,編輯和刪除。有許多的好處,這樣做:

  • 你有你所有的應用程序組件可以使用一個單一身份驗證源:你的網站可以用它來記錄人們在幕後,你的API服務可以使用它以驗證API請求等。
  • 你有一個單一的服務,它可以巧妙地管理用戶緩存 - 這是非常危險的實現用戶緩存到處都是(這是通常發生在你處理多重身份驗證時方法:你可能會緩存用戶的API服務,但無法緩存他們的網站,這樣的東西會導致問題)。
  • 你有一個單獨的服務,可以獨立擴展你的其他組件。這樣想一想:比其他任何應用程序的數據訪問更多?在大多數應用程序中,它是用戶數據。對於每一個請求,用戶數據都是需要的,這會對數據庫/緩存/你正在做的事情造成壓力。擁有管理用戶的單一服務使您可以輕鬆地擴展這部分應用程序堆棧。

總的來說,認證真的很難。

在過去兩年中,我一直是OpenCNAM的首席技術官,而且我們遇到了同樣的問題(一個網站和API服務)。爲了正確處理身份驗證,我們最終構建瞭如上所述的內部身份驗證服務,然後使用Flask-Login通過網站處理用戶身份驗證以及通過API對用戶進行身份驗證的自定義方法(只需對我們的身份驗證進行HTTP調用即可)服務)。

這工作真的很適合我們,並讓我們從成千上萬的請求的規模數十億(通過隔離在我們的堆棧的每個組件,並專注於用戶身份驗證作爲一個單獨的服務)。現在

,我不建議這對於那些沒有很多用戶的應用程序是非常簡單的,或應用程序,因爲它是更多的麻煩比它的價值。

如果你正在尋找一個第三方解決方案,Stormpath看起來非常有前途的(它只是谷歌)。

無論如何,希望有所幫助!祝你好運。