2014-11-06 106 views
0

我正在使用Angularjs和Node.js(hapijs特定)創建應用程序。REST風格的體系結構身份驗證/授權策略

我試圖爲這樣的RESTful類型的體系結構確定一個很好的身份驗證和授權策略。

我花了很多時間閱讀關於這個網絡,我想出了一個關於我爲我的應用程序做什麼的圖表。我想知道這個模型中是否有明顯的漏洞,或者我可以做些什麼來使它更安全。

這是假定所有流量均通過SSL運行。我目前也不能使用SAML或OAuth或類似的東西,因爲這是用於內部應用程序。

RESTful Architecture Model

回答

2

在第二個圖,用於未經身份驗證403的授權錯誤和401 - 這種方式,客戶可以知道拿在處理錯誤,代碼路徑。

不清楚第一個圖表顯示的是什麼 - 如果這是瀏覽器請求HTML頁面,則需要返回重定向而不是401 ...瀏覽器不知道如何處理401。一些/ login API的調用,沒關係。

+0

對不起第一個圖顯示登錄過程 – Catfish 2014-11-06 16:52:46

+0

仍不清楚你的意思,但我的答案涵蓋了兩種可能性:) – 2014-11-07 01:10:18

+0

是的,你的答案確實涵蓋了兩種可能性。當用戶登錄登錄頁面並輸入他們的用戶名和密碼並點擊提交時,我的第一個圖表應該代表從那一點發生的事情。 – Catfish 2014-11-07 01:12:11

0

你在這裏用什麼服務?這全都直接在MongoDB中嗎?如果沒有,你的應用程序層幾乎肯定會有更好的會話管理,比你能寫的更好。我強烈建議您在嘗試編寫自己的產品之前,先調查您的平臺提供的開箱即用功能。

+0

你能詳細說明嗎?我不確定你的意思或你指的是什麼。這是一個REST架構,所以它是STATELESS。每個請求都得到認證和授權。 Mongo存儲隨機令牌,並且來自客戶端的每個請求都包含該令牌(一旦用戶登錄並生成令牌)。在我的情況下,令牌存儲在sessionStorage中的客戶端,但可以很容易地存儲爲cookie。 – Catfish 2014-11-06 19:38:27

+0

它不是無國籍的。你有一個身份驗證令牌。那就是國家。您將該狀態作爲會話存儲存儲在mongodb中。讓我問你一下。會議永遠持續下去嗎?你是否需要超時他們的會話(令牌)? – 2014-11-07 12:28:34

+0

我想我總是理解無狀態的需要認證/授權每一個請求到服務器。就服務器而言,目前會話永遠持續下去。最終他們可能會超時。當客戶端關閉瀏覽器時,他們的sessionStorage消失了,因此客戶端上不存在令牌,因此他們需要重新登錄。 – Catfish 2014-11-07 13:58:24