CosmosDB 仅访问用户的特定记录

CosmosDB access only specific records for user

我正在尝试通过一些简单的 CRUD 操作为我的应用程序实现完全“无服务器”状态,因此我目前的方法是在前端使用 Blazor WASM,并使用 CosmosDB 作为记录存储。我已经在我的 Blazor 应用程序中配置了 AAD(Azure Active Directory)身份验证,至于现在,我想知道是否有任何方法可以限制 Blazor 中的 CosmosDB 客户端只读取专门属于当前用户的记录(每个记录有 UserId 字段)? 所以,我想知道的主要事情是,是否可能? 因为我找到了很多不同的文档,但是由于缺乏使用 Azure 的经验,我无法完全理解。

提前致谢!

P.S。我想采用的主要解决方案 - 完全避免任何后端(API/servers/Azure 函数),因为我真的想让它只是客户端应用程序 <-> CosmosDB,而带有 JavaScript 前端的 AFAIK Firebase 允许这样做这样的技巧,但我对这里的 Azure 特定解决方案很感兴趣

我没有 Blazor 的简单演练,但总体而言,该过程类似于此指南:Authenticate Users with an Azure Cosmos DB Document Database and Xamarin.Forms 但它需要设置 API 服务来代理连接,这你特别要求避免。

如果您没有使用自动 Resource Token Broker,那么在您的逻辑中的某处,您将需要存储某种地图来为登录用户解析 Cosmos DB Resource Tokens

在以下指南中,将 Xamarin 替换为 Blazor,将 Facebook 替换为 Azure AD

  1. 登录时,Blazor WASM 联系 Azure 应用服务以启动身份验证流程。
  2. Azure App Service 使用 Azure AD 执行 Open Auth 流程。身份验证流程完成后,Blazor WASM 收到访问令牌。
  3. Blazor WASM 使用访问令牌从资源令牌代理请求资源令牌。
  4. 资源令牌代理使用访问令牌从 Azure AD 请求用户身份。然后使用用户的身份从 Cosmos DB 请求资源令牌,该令牌用于授予 read/write 对经过身份验证的用户的分区集合的访问权限。
  5. Blazor WASM 使用资源令牌直接访问具有资源令牌定义的权限的 Cosmos DB 资源。