【问题标题】:Get access to DocumentDB with JS使用 JS 访问 DocumentDB
【发布时间】:2016-09-27 13:25:22
【问题描述】:

我正在开发一个应用程序,它应该连接到外部 DocumentDB 数据库(不是我的)。该应用程序是使用 Cordova/Ionic 构建的。

我从 Microsoft Azure 中找到了一个 JavaScript 库,以确保 DocumentDB 数据库连接,但它要求一些奇怪的东西,例如 collection_ridtokens

我从外部 DocumentDB 数据库的人那里得到以下信息:

但是我应该如何从这些信息中检索collection_ridtoken

【问题讨论】:

    标签: javascript azure azure-cosmosdb


    【解决方案1】:

    在没有行级授权的情况下,DocumentDB 旨在从服务器端应用程序访问,而不是直接从浏览器中的 javascript 访问。当您给它主令牌时,您将获得完全访问权限,这通常不是您想要的最终用户客户端。即使是只读密钥通常也不是您想要分发给客户的。 Azure 提供的 javascript 库旨在从 node.js 作为服务器端应用程序运行。

    也就是说,如果您真的想在没有在服务器上运行代理应用程序的情况下从浏览器访问它,您绝对可以使用直接访问 DocumentDB REST API 的普通 REST 调用来实现。我不认为 Azure 提供的 SDK 会直接在浏览器中运行,但在 Browserify 的帮助和一些手动调整(它是开源的)下,您也许可以让它运行。

    您可以从为您提供连接字符串信息的人那里获取集合名称,并使用基于名称的路由来访问集合。我不确定你所说的令牌到底是什么意思,但我猜你指的是会话令牌(需要会话级一致性)。如果您想了解有关该令牌如何来回传递(在 HTTP 标头中)的详细信息,请查看 REST API 规范,但如果您采用该路线,SDK 会自动处理它。

    【讨论】:

    • 所以您是说我能够通过正常的 REST API 调用检索数据?那将是完美的。我只想读取数据以便在应用程序中显示它们,实际上我不想处理这种(对我而言)新型数据库、所有安全层和 node.js 等。怎么能我通过 REST API 从 DocumentDB 检索数据?使用正常的POSTGET 请求?我有这个数据库的完整 Web API 文档。
    • 如果您对这个答案满意,可以接受吗?
    • 谢谢。是的,我会接受你的回答,但我必须更深入地研究这个话题。也许您知道一个简短的答案,但是是否可以发出普通的 ajax 请求 (GET) 来检索数据?
    • 当然。这就是 REST API 的用途。棘手的部分是编写授权标头,但这里有很多答案解释如何做到这一点。
    【解决方案2】:

    请注意,DocumentDB 还提供与行级授权等效的支持,使您能够在所需实体上创建特定权限。一旦你拥有了这样的权限,你就可以检索相应的令牌,该令牌的范围是在一定的时间段内有效。您需要设置一个中间层来获取这些令牌并分发给您的用户应用程序。然后,用户应用程序可以将这些令牌用作不记名令牌,而不是使用主密钥。

    您可以在https://msdn.microsoft.com/en-us/library/azure/dn783368.aspx找到更多详细信息

    https://msdn.microsoft.com/en-us/library/azure/7298025b-bcf1-4fc7-9b54-6e7ca8c64f49

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多