2014-01-23 44 views
0

我收集了存儲在默認應用服務/Users集合中的用戶。Apigee應用服務 - 保護/ Users集合中的敏感數據

開箱,創建一個用戶,你只需要收集以下數據:

{ 
    "username" : "john.doe", 
    "email" : "[email protected]", 
    "name" : "John Doe", 
    "password" : "test1234" 
} 

姓名和電子郵件是不是特別敏感的(儘管仍必須適當地固定),但如果我想要包含地址,出生日期,母親的婚前姓名等,這些數據會變得更爲敏感。

幸運/users數據不可用而無需驗證,但是,如果我請求access_token並登錄。

當然人們可以容易地設計一前端,可以掩蓋敏感位,從視圖中隱藏了。但是看看底層端點,捕獲我的access_token並向/{org}/{app}/users發送一個經過驗證的GET請求並不需要太多,因此每個用戶的個人信息都會看到所有的

是否有可能通過roles and permissions或所有權將實體的分段僅限制爲self(例如,登錄的用戶可以訪問其整個用戶實體,但只能訪問其他用戶實體的有限部分)。

如果沒有,是否有不同的方式來解決這種困境並保護用戶對象中的敏感信息?

回答

3

瑞摩斯,

除非您刪除或修改了「默認」的角色,你不能看到一個用戶的數據與其他用戶的令牌。所以沒有什麼可擔心的。

此外,作爲良好實踐的問題,您應該確保您發送的報頭OAuth令牌,而不是在查詢字符串(如不這樣做?=的access_token'。

+0

謝謝羅德。然而,在許多情況下,用戶需要能夠查詢(用於搜索目錄等)。那麼沒有辦法將未經授權的用戶隱藏用戶實體塊? – brandonscript

1

我建議您將App Services放在API服務(Apigee網關)後面,然後重寫有效負載。

基本上(雖然它的一些額外的步驟比我要能夠放入短的響應),你會做以下幾點:

1)創建API服務代理您usergrid.com目標(https://api.usergrid.com/ {yourorg}/{您的應用})

2)創建一個/ users資源。

3)可以使用Javascript標註重寫僅包含要展示的元素的有效內容,也可以使用ExtractVariables策略來抽取您想要公開的特定元素並將AssignMessage策略設置爲僅包含響應的新Payload你想暴露。

+0

是的,這也是我的解決方法,感覺應該有一個更簡單的方法來處理它?我想將數據分離成單獨的集合也可以,然後將它們代理在一起 – brandonscript

+0

使用兩種收集方法是可行的。一個集合/ userPublic可以包含公共信息,另一個集合/ userPrivate可以包含敏感信息。您可以在/ userPublic條目和/ userPrivate條目之間創建連接,然後設置權限,以便只有該用戶才能訪問/ userPrivate條目。這有一個缺點,即/ userPublic連接不一定是唯一的(你可能不希望它是)。 –

+0

應用服務非常適合私人API。您可以快速創建資源並建立一些基本的用戶權限,但它不是爲了設置_public_ api。當你進入有條件的數據時,你真的在​​談論比App服務更簡單的程序。 因此... Api服務。 –