簡體   English   中英

無法使用我在 React Native 中通過 Rest API 構建的移動應用程序訪問 Cosmos DB

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

我對構建移動應用程序相當陌生,並且花了幾天時間試圖解決或至少理解以下問題。 我正在 expo 中構建一個響應原生的移動應用程序。 我已選擇 Cosmos DB 作為我的數據庫。 這是一個好的決定嗎? 我應該轉移到 Firebase 還是其他數據庫? 假設我堅持使用 Cosmos DB,我無法獲得為 REST API 構建的授權字符串。

具體來說,我發現每次搜索都會導致 Crypto-JS。 React Native 不支持 Crypto-JS(至少在 expo 中)。 所以,我一直在嘗試自己構建加密。 根據我的研究,存在三個步驟來獲取我的 REST API 的授權字符串。

  1. 將密鑰轉換為單詞數組(不確定這是什么 - 為什么它需要是一個數組 - 與直接 Base64 編碼相比)。 需要使用 parse 來構建數組。 但是,我無法在 expo 中使用 parse 本機反應。 還是我?
  2. 使用 HMAC 256 加密
  3. 在 Base64 中使用 stringify 解碼(同樣 - 在 React Naive - Expo 中不支持)。

解析如何在一個鍵上工作 - 邏輯是什么? 例如,當我在 Base64 中編碼“Hello world”時,我得到的答案與使用解析不同。

Base64 - SGVsbG8gd29ybGQ=

Postman 使用 Parse - 1de965a00c28ae57 (Microsoft Cosmos API 喜歡這個答案)

這是如何運作的? 為什么我需要解析。 順便說一句,帶有 Crypto-JS 和解析的 Postman 解決方案有效。 如何在 Expo 的 React Native 中構建授權字符串?

我將非常感謝您的洞察力和幫助,因為我的頭因撞到牆上而受傷。 謝謝 BC

發布為答案。

有很多人使用 Cosmos DB 作為移動設備應用程序的數據庫。 最值得注意的是,許多移動游戲應用程序都喜歡 Cosmos DB,因為它是一個分布式數據庫。 但還有很多其他人。

要從每個租戶單獨保存數據的移動設備連接到 Cosmos DB,您需要一個中間層來充當應用程序的身份驗證提供程序。 對於 Cosmos DB,此方案的中心是使用用戶和權限以及資源令牌,以及作為移動應用程序的身份驗證提供程序的令牌代理中間層服務的實現。 資源令牌由令牌代理服務為每個用戶頒發,並且可以傳遞提供對該用戶數據的訪問權限的令牌,通常具有分區鍵的粒度,這是您在 Cosmos 中可以擁有的最大粒度。

您可以在此處了解有關Cosmos DB 中資源令牌的更多信息,其中包括一個簡單(但有些過時)的示例,說明如何為移動設備應用程序創建令牌代理。 如果您正在尋找一個更強大的示例,您還可以查看由 Citrix 的工程師創建的Java 編寫的示例

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM