2012-10-12 76 views
2

我通過開發一個單獨的REST API服務器和一個Web應用程序服務器來創建一個'API as a service',它只是提供一個使用REST API的網站。網絡應用充當API的客戶端。該Web應用程序是一個簡單的儀表板,允許用戶登錄並查看其API使用情況並查看其API密鑰和密鑰,以便他們可以安全地訪問該API。REST API如何知道用戶是否已登錄?

我打算使用類似AWS的共享密鑰來使API的客戶端能夠訪問受保護的資源。

但是,有一點我很困惑的是,用戶登錄到儀表板網站時,是否應該由REST API或Web應用程序服務器來處理。

如果要由REST API端點處理,那麼API服務器如何在請求之間維護會話狀態。 API如何知道用戶是否登錄?在API服務器上存儲會話狀態是否可行,即使它應該是無狀態的。像twitter這樣的其他類似休息的API如何做到這一點?

回答

2

ReSTful安全處理服務器端;基本上是:

  • 當客戶端請求的資源沒有被驗證
  • 每一位客戶的呼叫都通過WWW身份驗證頭
  • 這個頭可以儲存客戶端提供身份驗證服務器返回401個狀態碼 - 成功登錄後在cookie中登入

您會在該書中找到有關該問題的極大幫助:ReSTful WebServices Cookbook。尋找關於基本/摘要認證的解釋。

這裏是a good introduction與一個活的工作樣本。

+0

感謝您的回答,但問題更多的是關於API應該如何處理會話中的用戶登錄,或者是否應該不是API的一部分,只是在我的儀表板網站上實現 – cjroebuck

+0

API不需要session:when一個客戶端要求一個安全的資源,他們稱之爲授權或拒絕訪問的身份驗證管理器(一種是/否實現的機制)。 –

+0

很酷。是的,這也是我一直在讀的,謝謝。所以基本上,登錄/註銷是由應用程序服務器處理的,而不是API服務器? – cjroebuck