Asp.net core 在ASP.Net Core(Blazor)中将特定/手动用户同意添加到Microsoft Graph中

Asp.net core 在ASP.Net Core(Blazor)中将特定/手动用户同意添加到Microsoft Graph中,asp.net-core,azure-active-directory,azure-ad-graph-api,blazor-server-side,Asp.net Core,Azure Active Directory,Azure Ad Graph Api,Blazor Server Side,我在Blazor(ASP.NET核心)中构建了一个web应用程序。应用程序是多租户的,我需要控制谁有访问权,因此我使用存储在SQL数据库中的自己的用户数据库(DefaultIdentity) 现在我需要访问Microsoft Graph(对于某些用户)。我通过使用应用程序级访问来实现这一点,但我希望避免让本地IT管理员在他们的Azure广告中设置这一点,我希望遵守“最低特权原则” 因此,我希望能够添加一个登录页面/功能,在该页面/功能中,特定用户(在使用我的本地用户数据库登录后)可以向我的应用程

我在Blazor(ASP.NET核心)中构建了一个web应用程序。应用程序是多租户的,我需要控制谁有访问权,因此我使用存储在SQL数据库中的自己的用户数据库(DefaultIdentity)

现在我需要访问Microsoft Graph(对于某些用户)。我通过使用应用程序级访问来实现这一点,但我希望避免让本地IT管理员在他们的Azure广告中设置这一点,我希望遵守“最低特权原则”

因此,我希望能够添加一个登录页面/功能,在该页面/功能中,特定用户(在使用我的本地用户数据库登录后)可以向我的应用程序自动化+同意检索日历。通过Microsoft Graph读取权限


我该怎么做?我可以从我的web应用程序以编程方式调用ad azure登录/同意页面吗?(可能)-但是如何使用呢?

您正在使用应用程序级访问。因此,我认为你是在追随而不是追随

在这种情况下,您无法使用特定用户授予
Calendar.Read
应用程序权限,因为此权限需要管理员同意,并且对完整租户生效

所以这个设计不是很合适

您需要做的是配置应用程序访问策略并限制应用程序权限的范围

请参见此处的详细信息:


我知道您不想使用AAD进行配置,但这是最好的方法,您不需要从代码中限制范围。

Hmm,基本上您需要使用范围“Calendar.Read”将用户重定向到登录端点。这将促使他们对此表示同意。请注意,然后需要使用每用户访问令牌进行身份验证,您还需要处理刷新令牌。谢谢。这是为了坚持“最低特权原则”的一种可能性。虽然我仍然需要让客户内部IT来执行设置。@MichaelØsterbergJakobsen获得应用权限(非授权权限),但我相信您无法按预期使用该设计。如果我的回答有帮助,你可以将其标记为已接受。非常感谢。