我有一组存储在默认App Services /Users
集合中的用户。
开箱即用,要创建用户,您只需收集以下数据:
{
"username" : "john.doe",
"email" : "john.doe@gmail.com",
"name" : "John Doe",
"password" : "test1234"
}
姓名和电子邮件不是特别敏感(虽然仍然应该得到妥善保护),但如果我想要包括地址,出生日期,母亲的婚前姓名等,这些数据会变得更加敏感。
幸运的是,/users
数据在没有身份验证的情况下无法使用,但是如果我请求access_token
并登录则是这样。
当然,人们可以很容易地设计一个遮挡敏感位的前端,将其隐藏起来。但是查看底层端点,捕获access_token
并向/{org}/{app}/users
发出经过身份验证的GET请求并不需要花费太多时间,因此可以查看所有每个用户的个人信息
是否可以通过roles and permissions或所有权将实体的细分仅限制为self
?(例如,登录的用户可以访问其整个用户实体,但只限于其他用户实体的有限部分。)
如果没有,是否有不同的方法来解决这种困境并保护用户对象中的敏感信息?
答案 0 :(得分:2)
瑞摩斯,
除非您删除或修改“默认”角色,否则您无法使用其他用户的令牌查看一个用户的数据。所以没什么值得担心的。
另外,作为一个好的做法,你应该确保你在标题中而不是在查询字符串中发送oauth标记(例如,不要做?access_token =''。
杆
答案 1 :(得分:1)
我建议您将App Services放在API服务(Apigee Gateway)后面,然后重写有效负载。
基本上(虽然这是一个额外的步骤,而不是我能够做出简短的回应),你会做以下事情:
1)在API服务中为您的usergrid.com目标创建代理(https://api.usergrid.com/ {yourorg} / {your app})
2)创建/ users资源。
3)使用Javascript callout仅使用您要公开的元素重写有效负载,或者使用ExtractVariables策略来提取您要公开的特定元素,并使用AssignMessage策略设置新的Payload,仅使用您的响应想曝光。