首页 > 解决方案 > 团体超龄索赔

问题描述

我收到针对 Azure AD 进行身份验证的用户的组超额索赔。如下所示:

{"src1":{"endpoint":"https://graph.windows.net/TENANTID/users/USERID/getMemberObjects"}}

我的想法是我可以调用那个端点,我确实喜欢:

var authenticationContext =
    new AuthenticationContext(
        ctx.Options.Authority);
var clientCredentials =
    new ClientCredential(ctx.Options.ClientId, ctx.Options.ClientSecret);

var result =
    await authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCredentials);

using (var httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {result.AccessToken}");

    var httpResponse =
        await httpClient.GetAsync("https://graph.windows.net/TENANTID/users/USERID/getMemberObjects?api-version=1.6");

    var jsonresult =
        await httpResponse.Content.ReadAsStringAsync();
}

我认为这会起作用,但不是在抱怨它希望该方法成为Post. 不确定我会为 Content 传递什么,但它在 Postman 中尝试过,但仍然失败。

我希望我只是让这变得比它需要的更困难,但是对于我的生活,我找不到一个很好的明确示例来说明如何从 MVC 核心应用程序调用 Graph API。

任何帮助将非常感激!

更新

我将其更改为 aPost并传入一个null正文,并收到 codeAuthorization_RequestDenied和 value的错误Insufficient privileges to complete the operation.

确保授予 Application Directory.Read.All 权限。

标签: azureasp.net-coreazure-active-directorymicrosoft-graph-apiopenid-connect

解决方案


对于 azure ad Graph,您的请求格式不正确,您可以尝试以下方式

请求网址:

https://graph.windows.net/TenantId/users/UserId/getMemberObjects?api-version=1.6

方法类型: POST

请求正文

{ 
   "securityEnabledOnly": false 
}

邮递员样本:

在此处输入图像描述

所需权限:

权限类型:应用程序

Directory.Read.All Or Directory.ReadWrite.All

看屏幕截图:

在此处输入图像描述

有关详细信息,您可以参考这个官方文档


推荐阅读