我必須實現一個網站(MVC4/Single Page Application + knockout + Web.API),我一直在閱讀大量的文章和論壇,但是我仍然無法弄清楚安全/認證中的一些問題,確保登錄頁面和Web.API安全的前進方式。我應該如何保護我的SPA和Web.API?
該網站將完全在SSL下運行。用戶第一次登錄後,他/她將收到一封帶有鏈接的電子郵件,以確認註冊過程。密碼和「鹽」值將被加密存儲在數據庫中,不可能將密碼解密回來。該API將僅用於此應用程序。
我有一些問題,我需要之前回答再往前走:
- 哪種方法將是最適合我的應用程序在安全性方面:基本/ SimpleMembership?任何其他可能性?
- 對象Principal/IPrincipal是否僅用於Basic Authentication?
- 據我所知,如果我使用SimpleMembership,因爲使用了Cookie,這是不是打破了RESTful範式?所以如果我建立一個REST Web.API,我不應該避免使用SimpleMembership嗎?
- 我正在用令牌檢查ThinkTecture.IdentityModel。這是一種類似於基本身份驗證,表單身份驗證或身份驗證身份驗證的身份驗證類型,還是可以添加到其他身份驗證類型的身份驗證類型?
謝謝。
Sujesh,非常感謝您的回答。我知道SPA與任何其他應用程序沒有區別,我只是試圖設置場景以便更清楚地瞭解可能的答案。我明白你在回答1上的意思,但我想每種方法來進行認證都有優點/缺點。關於您最後一次關於令牌的評論,我記住了AntiForgeryToken屬性的用法,並且我知道如何使用它,但是如果我決定使用基於令牌的系統驗證,是否意味着我必須將請求發送給API,兩個令牌? (認證和AntyForgery)。 – Scheveningen 2013-04-30 00:36:01
那是正確的。通常情況下,防僞令牌不過是帶有令牌的隱藏字段,隨後每次提交表單都會提交。在這種情況下,如果您只使用HTML,那麼您將顯式讀取令牌(將令牌放在主索引上,或者提出一種方法,它取決於身份驗證),然後將其作爲頭的一部分發送在你的ajax請求。 – 2013-04-30 12:37:33