0

我正在测试最近发布的 DocumentDb,但找不到任何说明如何执行用户数据隔离的最佳实践的文档。

我想粗略的设计是:

  • 验证用户并创建新/获取现有用户 ID
  • 在文档插入时,将用户 ID 注入到文档中
  • 在读取文档/文档集合时查询文档用户 ID = 当前用户 ID

我正在创建一个 AngularJs 应用程序,目前使用结合 Azure 移动服务的 Azure Sql 数据库。

移动服务通过使用数据脚本 javascript 函数处理用户身份验证以及服务器端用户数据隔离:

例如

function insert(item, user, request) {
  item.userId = user.userId;
  request.execute();
}

关于使用 DocumentDB 与 AngularJS 安全隔离用户数据的技术有什么建议?

4

1 回答 1

1

您的方法对我来说听起来很合理-假设您的粗略设计中提到的逻辑发生在您的后端服务中。

通常,我会像对待任何其他数据存储一样对待 DocumentDB。您的客户端 (AngularJS) 调用您的后端服务,而不是直接调用您的数据存储。在将任何工作委派给您的数据存储之前,您的后端会验证客户端的请求(即断言用户已通过身份验证并且可能会接触特定的数据)。

如果需要从客户端直接访问数据库 - 您可以查看 DocumentDB 的用户和权限。要为您的应用程序实现多租户,您可以在 DocumentDB 中创建与您的实际用户或应用程序租户相对应的用户。然后,您可以为给定用户创建权限,这些权限对应于对各种集合、文档、附件等的访问控制。在您的客户端上,您可以使用用户的资源密钥而不是 DocumetnDB 的管理员密钥连接到数据库。

查看有关 DocumentDB 用户/权限的博客文章:http: //blogs.msdn.com/b/cloud_solution_architect/archive/2014/12/09/permissions-in-azure-documentdb.aspx

于 2014-09-04T17:58:19.510 回答