团体超额索赔

时间:2019-07-19 15:54:07

标签: azure asp.net-core azure-active-directory microsoft-graph openid-connect

我正在收到针对用户根据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 Core应用程序调用Graph API的明确示例。

任何帮助将不胜感激!

更新

我将其更改为Post并传递到null正文中,并收到代码为Authorization_RequestDenied和值Insufficient privileges to complete the operation.的错误。

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

2 个答案:

答案 0 :(得分:1)

对于天蓝色广告图,您的请求格式不正确,您可以尝试以下方式

请求网址:

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

方法类型: POST

请求正文

{ 
   "securityEnabledOnly": false 
}

邮递员示例:

enter image description here

需要权限:

  

权限类型:应用程序

     

Directory.Read.All Or Directory.ReadWrite.All

查看屏幕截图:

enter image description here

有关详细信息,您可以参考此official docs

答案 1 :(得分:0)

终于解决了我的问题!我需要将请求更改为POST并添加{ "securityEnabledOnly": false }作为正文-感谢@MdFaridUddinKiron在此方面的帮助!

我缺少的一件事是授予我的应用程序管理员同意。

enter image description here

希望这可以帮助其他人!