2014-04-02 35 views
0

下面是設置,我想要構建一個單一的網頁應用程序,Dart和Angular Dart是我的前端工具。單頁網頁應用程序和身份驗證

對於服務器後端我使用的PHP只是它的Web應用程序的CDN和REST api數據來服務這個Web應用程序。

我需要建立一些登錄和身份驗證,我已經解決了Openid,使註冊和登錄儘可能簡單。 我已經花了最後幾天梳理網絡和這個論壇的解決方案是有道理的,現在我只是更困惑:)

我可以在客戶端和服務器端獲得基本身份驗證信息使用'用「X」的例子登錄,驗證用戶,我可以創建/註冊他們的服務器端,所有酷。

我現在的問題是如何在Web應用程序和服務器之間以最安全和最有效的方式使用此信息? 這裏是我的想法/選項:

  1. 難道我只是在服務器上創建一個會話,並且當web應用程序,使得AJAX調用數據檢查他們仍然記錄在回答之前?

  2. 對於真正的REST風險API我明白這是最好的驗證每個電話,如何做到這一點從客戶端的ajax調用?我是否會在登錄時向客戶端傳遞某些東西(即令牌)以便在每次通話時發送信息,我該如何處理?

  3. 我是否會以相反的方式執行此操作並獲取auth詳細信息客戶端並在發送數據之前將它們傳遞給服務器端進行驗證?

我主要是一個桌面開發人員,所以這一切都有點壓倒一切,任何意見,我應該進行的方式將不勝感激。 一個簡單的一步一步的過程描述給我一些方向將是偉大的,謝謝。

米克。

+0

你到目前爲止使用過的代碼? –

+0

嗨蘇丹,我還處於初步設計階段,需要更多的指導而不是代碼幫助。 這是我需要了解的更多登錄認證流程。 感謝您的關注。 Mick。 –

回答

0

這可能是一個解決方案(我不是專家,但我想用這個):

一個新的哈希密碼存儲到數據庫

用戶創建密碼和新密碼以散列模式存儲到數據庫(使用dart可以在服務器端使用,例如此包:password_hasher,必須有類似的PHP包)。

驗證登錄和與過期時間創建會話信息

當用戶登錄並給出了一個口令,比較給定的密碼對存儲一個(使用來自先前包函數)。如果密碼匹配,那麼在數據庫中創建一個新條目或在服務器端創建會話cookie。新條目應具有唯一的ID和到期時間(例如30分鐘)。該id被髮回給客戶端。客戶端存儲該ID。

驗證每個請求,並更新過期時間

當客戶端發出一個請求時,它也發送ID回服務器。服務器將收到的ID驗證爲數據庫中的ID條目。如果ID匹配,則數據庫中ID的到期時間將被更新回30分鐘,並回復請求。

用戶註銷或有

當用戶註銷時,與該ID的註銷請求被髮送到服務器,並且服務器從數據庫中刪除的ID長非激活時間。如果超過30分鐘的非活動時間段,服務器會自動刪除會話ID。

未經授權的請求

如果不從數據庫中找到來自客戶端的請求不包括會話ID或ID,服務器向客戶端發送應答與重定向的請求到登錄頁面或發送登錄頁面(取決於應用程序的構建方式)。

的主要安全的事情是:

  1. 切勿將密碼作爲文本
  2. 不要每個請求發送周圍哈希密碼,而是使用會話相關的ID爲連續傳輸
  3. 自動過期與會話相關的ID
  4. 將每個未經授權的請求重定向到公共頁面
+0

HI grohjy, 我也在考慮這些方面,但在會話中使用openid登錄。 對我來說,使用openid的重點在於,我不會存儲密碼,發送會話'令牌'或類似的想法,以至於嗅探器很可能會忽略,因爲沒有什麼重要的是我正在考慮的選項。 這是在負載會話中創建的,然後在整個會話期間使用會話ID /信息,並使用自動註銷和時間限制。 這是可行和安全的嗎? 謝謝。 –

+0

我認爲重要的是驗證服務器端的用戶。這意味着您必須在服務器中存儲一些關於用戶到數據庫的信息(例如電子郵件地址),然後您可以使用合適的接口(OpenID,OAuth 2.0或自行構建)進行驗證。 OpenID等減少了用戶必須記住的密碼數量。竊聽必須用https或類似的方式處理,因爲每次登錄交易都會通過互聯網傳遞一些「祕密」。 – grohjy

0

通常您在客戶端成功通過身份驗證時在服務器上創建會話Cookie。客戶端必須向服務器發送每個請求的會話cookie。
我自己並沒有使用PHP,但我確定有可用於PHP的現成可用包。
安全性很差,很容易做錯,因此您不應該嘗試自己烘烤。
客戶端應該沒有任何事情要做,因爲默認情況下,瀏覽器每次發送請求都會將cookies發送回服務器。

+0

嗨Günter, 我明白這個部分好吧,它只是在閱讀了這麼多的過去幾天後,我想知道這是否足夠或者是否有更多。 我能勝任PHP和我使用一個小的lib做openid auth,工作正常,所以這部分是涵蓋服務器端。 也許我只是想了一下,再次感謝您的意見。 Mick。 –

+0

與客戶端的會話處理相同。尋找一個圖書館,我確信PHP也有很多優點(特別是PHP)。 –