2015-05-05 25 views
1

我正在設計一個簡單的REST API與Stormpath Facebook集成並想知道什麼是用戶驗證的最佳模式。目前,我沒有爲用戶創建任何端點,所以我的端點的所有請求的身份驗證是這樣的:如何使用Stormpath Facebook集成來驗證REST API

  1. 獲得基於API_IDAPI_SECRET在我的應用程序配置Stormpath Application對象
  2. 獲取Stormpath Account基於對象在每個請求中指定的Facebook令牌基於帳戶狀態請求身份驗證或拒絕

這遵循或多或少 並且正常工作,因爲即使用戶帳戶不存在,它也會在首次獲得對Stormpath的帳戶請求時創建。它是否有意義並且足夠安全?我正在尋找一些文檔或最佳做法,但找不到任何東西。

我還需要獲得/生成唯一的用戶ID,這樣我可以在我的系統與用戶數據的一些關係 - 這樣一個問題,什麼是這裏最好的方法:

  1. 產生一些獨特的ID,它與用戶的電子郵件關聯從Stormpath拿到並保存在我的系統 - 我認爲這違反了像Stormapth這樣的服務的一點點想法,其封裝了所有用戶數據
  2. 執行與上面相同,但其存儲在Stormpath帳戶customData
  3. 使用可從用戶URI獲得的Stormapth用戶資源ID

請指教。

只是爲了記錄我正在使用Stormpath Java SDK並將API設計爲移動社交應用程序的後端,因此安全性對我來說非常重要。

回答

2

完全披露,我管理Product @ Stormpath。我將使用您的反饋來增強文檔。

如果不瞭解您正在構建的REST API,很難說它是否安全。如果您爲貓照片製作了REST API,我的答案與醫療/財務信息相比將會有所不同。一種看待它的方式是Facebook擁有Graph API(REST),它們保護訪問需要使用相同的訪問令牌。還有其他標誌會導致我說它不安全,就像您使用的HTTP沒有TLS一樣。

對於第二個問題,如何將Stormpath與您的數據鏈接起來。我不會說你會違反Stormpath的任何規定,只要將你的應用程序建模,這對你和你的應用程序來說是有意義的。 Stormpath擁有在Stormpath中存儲有關其用戶的所有內容的客戶。 Stormpath還擁有將Stormpath用於驗證和授權數據的客戶,並使用customData來繪製Stormpath用戶帳戶與其數據之間的鏈接。

您如何/何處存儲信息取決於您的需求。如果您開始使用Stormpath驗證用戶帳戶,則將唯一標識符/主鍵放入用戶帳戶的customData中是有意義的。如果您開始查詢用戶數據的數據存儲並需要獲取Stormpath用戶帳戶,那麼您需要將用戶帳戶的href存儲在數據存儲中。

在Stormpath SDK的Java一個很好的功能是,當你與Facebook進行身份驗證,如果帳戶是新創建的返回的對象會公開或者Stormpath已經現有帳戶的訪問令牌:

https://docs.stormpath.com/java/apidocs/com/stormpath/sdk/provider/ProviderAccountResult.html

這意味着您需要知道何時需要爲數據存儲中的帳戶創建記錄,並使用customData和/或用戶帳戶href連接兩者。

+0

我希望這個API成爲移動社交應用的後端,所以安全性在這裏很重要。我認爲我會堅持我目前所擁有的內容,但希望將來能夠看到一些更新的文檔,重點關注使用Stormpath的社交登錄/ API驗證模式/最佳實踐。 – mkorszun