0

我有一组存储在默认应用服务/Users集合中的用户。

开箱即用,要创建用户,您只需要收集以下数据:

{
  "username" : "john.doe",
  "email" : "john.doe@gmail.com",
  "name" : "John Doe",
  "password" : "test1234"
}

姓名和电子邮件不是特别敏感(尽管仍应妥善保护),但如果我想包括地址、出生日期、母亲的娘家姓等,这些数据将变得更加敏感。

幸运/users的是,未经身份验证,数据不可用,但如果我请求access_token并登录的话。

当然,人们可以很容易地设计一个前端来掩盖敏感位,将其隐藏起来。但是查看底层端点,捕获 myaccess_token并向 发出经过身份验证的 GET 请求并不需要太多/{org}/{app}/users,因此可以看到每个用户的所有个人信息。

是否可以通过角色和权限或所有权将实体的部分限制为仅self(例如,登录用户可以访问他们的整个用户实体,但只能访问其他用户实体的有限部分)。

如果没有,是否有不同的方法来解决这种困境并保护用户对象中的敏感信息?

4

2 回答 2

2

莱姆斯,

除非您删除或修改“默认”角色,否则您无法使用另一个用户的令牌查看一个用户的数据。所以那里没什么好担心的。

此外,作为一种良好做法,您应该确保在标头中发送 oauth 令牌,而不是在查询字符串中(例如,不要执行 ?access_token=''。

于 2014-01-23T22:19:16.933 回答
1

我建议您将应用服务放在 API 服务(Apigee 网关)之后,然后重写有效负载。

基本上(虽然这比我能够在简短的回应中多做一些步骤)你会做以下事情:

1) 在 API 服务中为您的 usergrid.com 目标创建一个代理 ( https://api.usergrid.com/ {yourorg}/{your app})

2) 创建一个 /users 资源。

3) 使用 Javascript 标注仅使用您想要公开的元素重写有效负载,或使用 ExtractVariables 策略提取您想要公开的特定元素,并使用 AssignMessage 策略设置仅包含您想要公开的响应的新有效负载.

于 2014-01-23T01:35:44.643 回答