2013-09-26 59 views
1

我正在Grails中開發一個後端服務,該服務應該同時提供Web應用程序和移動應用程序。針對Grails後端的PhoneGap身份驗證模式

前端正在使用AngularJS開發,移動應用程序將使用相同的AngularJS代碼庫與PhoneGap本地化。

現在,我正在尋找一種適當的方式來實現對Web應用程序和移動應用程序均適用的Grails後端的身份驗證。

三個想法:在localStorage的

1)店鋪的用戶名和密碼,並在每一個請求

2)使用基於Cookie的身份驗證身份驗證在後端的用戶(這是棘手的,以使在PhoneGap的餅乾,我應該 從AJAX響應摘錄並附加在AJAX請求中)

3)開發一個自定義協議,爲後端的每個會話生成一個令牌並將其存儲在LocalStorage中。會話令牌將在每個請求中發送到後端。

4)使用私鑰/公鑰機制(類似於Amazon AWS)爲每個請求籤名。即使在這種情況下,後端也必須驗證每個請求的簽名的正確性(沒有會話概念)。

我不太相信LocalStorage,但我沒有其他的想法,我也找不到任何示例(其他後端和前端技術的示例將有所幫助)。

您可以假設後端將以HTTPS運行。

+0

4)使用OAuth2,我相信有PhoneGap的實現 –

+0

謝謝伊戈爾。我更喜歡不使用OAuth2,因爲OAuth2提供者的實現超出了項目預算。無論如何,即使使用OAuth2,密鑰/令牌存儲也將依賴於LocalStorage功能,不是嗎?我的其他3種選擇呢? –

回答

1

我會去的第三個,有一些補充:

  1. 第一次設備連接,通過身份驗證以某種方式(用戶名/密碼或其他)的用戶。然後你發送一個持久性令牌給設備,將其保存到LocalStorage。
  2. 對於以後的每個會話,打開後客戶端會交換持久性標記以獲取短期會話標記(取決於上下文,短暫持續多長時間取決於您)。

這與您提供的類似,但降低了中間人和重播攻擊的風險。

希望得到這個幫助!