asp.net-core - 在 ASP.Net Core (Blazor) 中向 Microsoft Graph 添加特定/手动用户同意
问题描述
我在 Blazor (ASP.NET Core) 中构建了一个 Web 应用程序。该应用程序是多租户的,我需要控制谁可以访问,因此我使用存储在 SQL 数据库中的自己的用户数据库 (DefaultIdentity)。
现在我需要访问 Microsoft Graph(对于某些用户)。我通过使用应用程序级别访问来完成这项工作,但希望避免让本地 IT 管理员在他们的 Azure AD 中进行设置 - 我想遵守“最小权限原则”。
因此,我希望能够添加一个登录页面/功能,其中特定用户(在他们使用我的本地用户数据库登录后)可以授予我的应用程序授权 + 同意通过 Microsoft Graph 检索 Calendar.Read 权限。
我该怎么做?我可以从我的 Web 应用程序以编程方式调用 ad azure 登录/同意页面吗?(可能) - 但如何?
解决方案
您正在使用应用程序级别的访问权限。因此,我认为您正在关注Get access without a user而不是Get access for a user。
在这种情况下,您不能Calendar.Read
使用特定用户授予应用程序权限,因为此权限需要管理员同意,并且对完整租户生效。
所以这个设计不是很合适。
您需要做的是配置应用程序访问策略并限制应用程序权限的范围。
在此处查看详细信息:将应用程序权限范围限定到特定 Exchange Online 邮箱。
我知道您不想使用 AAD 配置它,但这是最好的方法,您不需要限制代码的范围。
推荐阅读
- css - 在 React 中设置输入类型 = Number
- typescript - 描述 d.ts 文件用于修补的第 3 方库
- ios - 如何使用特定数据处理中断的应用内购买
- dtls - 与使用 Californium Scandium 核心的 DTLS 客户端和服务器之间的连接 ID 交换相关的查询
- reactjs - 如何在每个对象上添加 onClick 句柄?
- typescript - Typescript 接口为 null 或特定对象
- angular - 下拉菜单在 angular-slickgrid 中不起作用
- python - 熊猫填充最近日期的值
- random - 如何使用 SeedableRng 生成随机数?
- hybris - 性能问题,因为实例太多