c# - CosmosDB 仅访问用户的特定记录

标签 c# azure azure-active-directory blazor azure-cosmosdb

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

提前谢谢您!

附注我想要实现的主要解决方案 - 完全避免任何后端(API/服务器/Azure Functions),因为我真的想让它只是客户端应用程序 <-> CosmosDB,并且 AFAIK Firebase 与 JavaScript FrontEnd 允许执行这样的技巧,但我对此处特定于 Azure 的解决方案感兴趣

最佳答案

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

如果您没有使用自动化的资源 token 代理,那么在您的逻辑中,您需要存储某种映射来解析 Cosmos DB Resource Tokens对于登录的用户。

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

typical resource token process

  1. 登录时,Blazor WASM 会联系 Azure 应用服务以启动身份验证流程。
  2. Azure 应用服务使用 Azure AD 执行开放身份验证流程。身份验证流程完成后,Blazor WASM 会收到访问 token 。
  3. Blazor WASM 使用访问 token 向资源 token 代理请求资源 token 。
  4. 资源 token 代理使用访问 token 向 Azure AD 请求用户身份。然后,用户的身份用于向 Cosmos DB 请求资源 token ,该资源 token 用于授予对经过身份验证的用户的分区集合的读/写访问权限。
  5. Blazor WASM 使用资源 token 通过资源 token 定义的权限直接访问 Cosmos DB 资源。

关于c# - CosmosDB 仅访问用户的特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72373909/

相关文章:

google-chrome - 浏览器如何处理OAuth2中的redirect_uri?

authentication - 在 Asp.Net Core Web 应用中使用 EasyAuth 对 Azure 应用服务上的 AAD 进行身份验证时,无法填充 ClaimsPrincipal

c# - 值不能为空。参数名称 : stream while converting XmlDocument to stream

c# - WPF 数据网格组合框列 : how to manage event of selection changed?

azure - BT2006 R2 到 Azure Windows 服务的迁移方法

c# - 在 Azure 上部署的 .net Web 应用程序中存储和执行二进制文件的最佳方式

c# - 添加MicrosoftIdentityWebAppAuthentication 刷新 token

c# - 如何在 MVC 中编写包含 FormsAuthenticationTicket 的单元测试用例

reactjs - Azure 静态 Web 应用上的 React 的构建配置是什么?

azure - Microsoft Graph 仅访问一组特定用户,而不是所有用户