获取访问令牌以使用客户端ID和客户端密钥和图API从Azure中提取用户组所需的范围

问题描述 投票:0回答:1

我正在尝试使用我的客户端密钥和客户端ID获取我的天蓝色租户中的组。问题是我不知道在获取访问令牌以使用图形API时要通过的范围。我使用https://graph.microsoft.com/.default来获取访问令牌,但这不包括提取组的权限。什么是适当的使用范围

azure scope azure-ad-graph-api
1个回答
1
投票

https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0#permissions

权限

调用此API需要以下权限之一。要了解更多信息,包括如何选择权限,请参阅权限。


权限类型权限(从最少到最高权限)

委托(工作或学校帐户)Group.Read.All,Group.ReadWrite.All

Application Group.Read.All,Group.ReadWrite.All

您需要在AAD中配置API访问,而不是在范围内配置。确保您不要忘记单击“授予权限”。

示例假定您需要应用程序权限。委托权限的工作方式类似。

enter image description here enter image description here

使用MSAL进行身份验证获取数据的示例代码:

        IConfidentialClientApplication app = new ConfidentialClientApplication(
            "clientId",
            "https://login.microsoftonline.com/yourtenant.onmicrosoft.com",
            "http://localhost (redirecturi)",
            new ClientCredential("secret"),
            new TokenCache(), new TokenCache());

        string[] scopes = new string[] { "https://graph.microsoft.com/.default" };

        try
        {
            AuthenticationResult result = await app.AcquireTokenForClientAsync(scopes);
            System.Console.WriteLine(result.AccessToken);

            using (var http = new HttpClient())
            {
                http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken);
                var groupResponse = await http.GetAsync("https://graph.microsoft.com/v1.0/groups");
                var groupJson = await groupResponse.Content.ReadAsStringAsync();
                System.Console.WriteLine(groupJson);
            }
        }
        catch (Exception ex)
        {
            System.Console.WriteLine(ex.Message);
        }
© www.soinside.com 2019 - 2024. All rights reserved.