首页 > 解决方案 > 用于使用 ASP.NET Web api 获取组和用户的 Azure AD 应用注册设置

问题描述

尝试使用 ASP.NET Web API 从 Microsoft 图形中获取所有组时,我得到 403 禁止访问,这是我获取所有组的代码:

String jsonResponse = MicrosoftGraphHelper.MakeGetRequestForString (  
                String.Format("{0}users/{1}/memberOf",  
                    MicrosoftGraphHelper.MicrosoftGraphV1BaseUri,  
                    upn));  
            var userGroups = JsonConvert.Deser

在 Delegated 和 Application 选项卡中获取用户和组所需的权限是什么?我是否需要应用程序权限,因为这是一个 API,并且我的 UI 单独部署在 azure 中?我对权限选项列表和管理员同意感到困惑。

标签: azure-active-directorymicrosoft-graph-apimicrosoft-graph-sdks

解决方案


首先,如果您还没有看到它,这是一本很棒的读物。

委派权限、应用程序权限和有效权限 - Microsoft Graph 权限参考。

在 Delegated 和 Application 选项卡中获取用户和组所需的权限是什么?

您可以通过查看相关文档了解每个 api 所需的权限。使用您在问题中共享的信息..

  1. 因为users/{1}/memberOf它将是List memberOf

    在此处输入图像描述

  2. 获取所有组 -列出组

    在此处输入图像描述

如果您的应用程序中只有这两个调用,Directory.Read.All 将是所需的最低权限。如果有其他电话,请查看他们的文档。

我是否需要应用程序权限,因为这是一个 API,并且我的 UI 单独部署在 azure 中?

这将取决于您获取令牌以调用 Microsoft Graph API 的上下文。分享有关您的代码的更多信息。您用于获取令牌的 OAuth 流程,您可能会获得针对您的应用程序的更好建议。不过总的来说,

  • 如果您以用户身份获取令牌,那么Delegated permissions(例如,如果您通过提示用户输入凭据来获取令牌,并且从流程的角度来看,如果您使用的是授权代码或隐式授权流程)

  • 如果您将令牌作为应用程序获取,则Application permissions(例如,如果您仅使用 clientId、clientSecret/certificate 来使用客户端凭据流获取令牌)

是否需要管理员同意?

这取决于您最终决定为您的应用程序所需的权限。

  1. 您可以直接在 Azure 门户中看到它。在为您的应用程序设置所需权限时,每个权限旁边都有一个是或否,以指示是否需要管理员同意。就像示例一样,请参见下面的屏幕截图。

    在此处输入图像描述

  2. Microsoft Graph 权限参考.. 我共享的第一个链接记录了所有权限。这里的示例与您相关。

在此处输入图像描述


推荐阅读