无法使用我通过 Rest 在 React Native 中构建的移动应用程序访问 Cosmos DB API

Can't access Cosmos DB with my mobile app built in React Native via Rest API

我对构建移动应用程序还很陌生,花了几天时间尝试解决或至少理解以下问题。我正在 expo 中构建一个基于 React Native 的移动应用程序。我选择了 Cosmos DB 作为我的数据库。这是一个好的决定吗?我应该转移到 Firebase 还是其他数据库?假设我坚持使用 Cosmos DB,我无法获得为 REST API.

构建的授权字符串

具体来说,我发现所有指向 Crypto-JS 的搜索。 React Native 不支持 Crypto-JS(至少在 expo 中)。所以,我一直在尝试自己构建加密。根据我的研究,三个步骤可以为我的 REST API.

获取授权字符串
  1. 将密钥转换为字数组(不确定这是什么 - 为什么它需要是一个数组 - 而不是直接的 Base64 编码)。需要使用parse来构建数组。但是,我无法在 expo react native 中使用解析。还是我?
  2. 使用 HMAC 256 加密
  3. 使用 stringify 在 Base64 中解码(同样 - React Naive - Expo 不支持)。

解析如何处理键 - 逻辑是什么?例如,当我在 Base64 中编码 'Hello world' 时,我得到的答案与使用 parse.

不同

Base64-SGVsbG8gd29ybGQ=

使用 Parse 的 Postman - 1de965a00c28ae57(Microsoft Cosmos API 喜欢这个答案)

这是如何工作的?为什么我需要解析。顺便说一句,带有 Crypto-JS 和解析的 Postman 解决方案有效。如何在 Expo 的 React Native 中构建授权字符串?

我非常感谢您的洞察力和帮助,因为我的头因撞墙而受伤。 谢谢 BC

作为答案发布。

有很多人使用 Cosmos DB 作为移动设备应用程序的数据库。最值得注意的是,许多移动游戏应用程序都喜欢 Cosmos DB,因为它是一个分布式数据库。但还有很多其他人。

要从每个租户的数据保持独立的移动设备连接到 Cosmos DB,您需要一个中间层作为您的应用程序的身份验证提供程序。对于 Cosmos DB,此方案的中心是使用资源令牌的用户和权限,以及充当移动应用程序的身份验证提供程序的令牌代理中间层服务的实现。资源令牌由令牌代理服务为每个用户颁发,并且可以传递提供对用户数据的访问权限的令牌,通常具有分区键的粒度,这是您在 Cosmos 中可以拥有的最粒度。

您可以在此处了解有关 Resource Tokens in Cosmos DB which includes a simple (and somewhat dated) example for how to create a token broker for a mobile device application. If you are looking for a more robust example of this you can also take a look at this example written in Java 由 Citrix 工程师创建的更多信息。

希望对您有所帮助。