2013-08-21 76 views
1

我正在通過PaaS(Google App Engine)設計SaaS應用程序。 我的SaaS將有兩種用戶界面:面向SaaS的驗證最佳實踐(GAE)場景

  • 基於Web的
  • 移動應用基於

基於Web的將是功能豐富,而移動應用程序將具有重要的和/或經常使用的功能。

移動應用程序會調用RESTful服務來執行業務邏輯。

此SaaS將主要針對使用移動應用程序的個人;然而,可以有一個用例,其中這些人可以組成一個團體並作爲一個公司來運作。因此,考慮到這一點,我正在考慮兩個實體:帳戶(租戶)和用戶。 我正考慮在這兩個實體之間建立多對多的關係,因爲一個用戶可能是多個帳戶的一部分(不太可能但不能排除),當然,一個帳戶可以有多個用戶。

我想知道這樣的情況下進行身份驗證的最佳實踐:

  • 我應該使用谷歌的提供身份驗證,或者我應該實現自己的身份驗證? (我仍在探索OAuth和Google的身份驗證產品。)
  • 我認爲,對於基於Web的界面,通過SSL的用戶名/密碼就足夠了。但是,不確定,這可以應用到移動應用程序嗎?
  • 我可以避免必須在移動應用程序中存儲憑據的情況嗎?

在此先感謝您提供的任何幫助。

一個

回答

0

Having just completed my first project using Google App Engine,我可以說,我跑進你有問題很多。我會盡力解釋我對每個觀點的看法,並從你的角度來看待它。

  1. 身份驗證 - 通常使用谷歌的權威性將是最快的途徑,但你仍然有爲了與「公司」 /「組」的概念,以努力實現自定義適應。在數據存儲/任何數據庫中實現你喜歡使用的名爲「Groups」的實體,這個實體有一個google用戶列表......這樣用戶可以屬於很多組,然後你只需通過屬性(用戶)搜索來獲得所有組他們屬於。由於不相關的原因,我實施了自己的認證系統。

  2. Google App Engine爲其自己的域提供SSL/HTTPS支持。您也可以在自己的自定義域中添加SSL支持。您還可以通過本機應用程序或移動Web應用程序使用SSL。我只是使用它附帶的本地支持。

  3. 是和否。你將永遠不得不將證書存儲在某個地方。也許它不會在你的應用程序代碼中/直接連接到你的應用程序(谷歌身份驗證將是一個例子)。但在某個地方,在您的手機上,憑據將駐留。他們可能被加密/模糊處理,但他們會在那裏。所以要麼讓用戶每次都輸入,要麼保存/使用手機提供的。爲了我自己, 。NET爲每個用戶的機器提供了一種以安全方式(非純文本)存儲憑證的好方法。

+0

感謝您的回覆,澄清了此場景中的驗證問題。不過,我有一個關於RESTful服務調用的問題。移動應用如何安全地調用RESTful服務?我正在考慮兩個章節的OAuth,但是它會在列表中增加一個憑證,不是嗎?你的建議是什麼?謝謝 - 答: – user2663512

+0

我不是OAuth的專家(但我認爲它與雙因素身份驗證有關?)。 基本上,你將要使用HTTPS。但是,它高度低估了GET請求的URL中的任何敏感內容。一個普通的RESTFUL認證方法似乎是基於令牌的,正如這裏指出的那樣:http://stackoverflow.com/questions/9201755/restful-service-authentication – Zerkz