2012-07-17 42 views
4

我有一個非常簡單的node.js應用程序構建在Express上,它一直使用會話內存存儲處理身份驗證。基本上,用戶通過登錄:SPA和node.js服務器的身份驗證

app.post('/sessions', function(req, res) { 
      // check username/password and if valid set authenticated to true 
     if (authenticated){ 
      req.session.user = req.body.username; 
       } ... 
}); 

然後從瀏覽器中的requiresLogin中間件函數被調用,檢查,看看是否在會話用戶屬性已設置每個呼叫。

我現在正在過渡應用程序基本上只提供一個服務,可能會或可能不會在瀏覽器中使用,所以,而不是使用Cookie /會話,我正在考慮更改系統,以便發佈到/ getToken(而不是/會話),它將返回一個與用戶帳戶關聯的臨時隨機令牌,然後可以使用該令牌一段時間訪問該服務。然後使用該服務需要在每次調用中包含有效的令牌。 (我認爲這會比每次傳遞用戶名/密碼都好,這樣在獲得令牌後,密碼就不必存儲在客戶計算機的內存中了)

這樣的系統基本上只是與上述當前系統一樣安全嗎?還是有更加標準/安全的方式來處理這個問題?處理這種事情的標準方式是什麼?

在此先感謝您的幫助!

回答

6

你在找什麼叫做HMAC,並且有一篇很棒的文章here來獲得關於如何爲你的服務實現的想法。

至於基於會話的安全性是否比公/私鑰對更加安全,這個問題廣泛存在爭議,而且還取決於實施/應用。在你的情況中,因爲你需要在面向公衆的API上進行每個請求認證,所以HMAC是一條可行的路。

+1

謝謝,這是一篇非常有趣的文章! – 2012-07-31 17:27:09