Java Azure AD Graph API-不断为getMemberGroups方法返回403

Java Azure AD Graph API-不断为getMemberGroups方法返回403,java,azure,spring-security,azure-ad-graph-api,Java,Azure,Spring Security,Azure Ad Graph Api,我有一个Java Spring MVC应用程序,它成功地与Azure AD集成以进行登录 然而,当我想列出用户组成员时,我得到了错误代码403。当我从Azure AD Graph Explorer手动测试时,它工作正常 这是我正在研究的代码: Reader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream(),“UTF-8”); 我在Microsoft示例中从Refresh token获得的访问令牌。对于其他API方法(如/u

我有一个Java Spring MVC应用程序,它成功地与Azure AD集成以进行登录

然而,当我想列出用户组成员时,我得到了错误代码403。当我从Azure AD Graph Explorer手动测试时,它工作正常

这是我正在研究的代码: Reader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream(),“UTF-8”); 我在Microsoft示例中从Refresh token获得的访问令牌。对于其他API方法(如/users/),同样的函数也可以正常工作。我想在Azure中需要配置一些参数来访问组成员资格。但是,当我使用同一用户登录时,它可以从图形浏览器正常工作。()

是否有人拥有完整的工作示例,其中包含读取用户组成员身份所需配置的所有步骤

谢谢,
Igor

请参阅此文档:


您可以找到如何选择权限范围,以提供应用程序所需的最低权限级别。正如@juunas所说,对于委托的作用域,授予应用程序的实际访问权限将是作用域授予的访问权限与登录用户权限的最低特权组合(交叉点)。请尝试向应用程序授予user.Read.All和Group.Read.All权限。

应用程序具有哪些权限?有效权限始终是来自应用程序和用户的最小权限,因此,即使用户能够做到,如果应用程序不能做到,也无法做到。嗨,我尝试了几乎所有授权权限的组合。即使我把它们全部加起来,我仍然得到403。但是,如果它在图形浏览器中工作,为什么它不能在我的web应用程序中与同一用户一起工作呢?是否还有其他需要配置的内容?
    URL url = new URL(String.format("https://graph.windows.net/%s/users/%s/getMemberGroups?api-version=%s", tenant, userId, apiVersion, accessToken));

    String json = "{\n" +
            "    \"securityEnabledOnly\" : true\n" +
            "}";

    byte[] postDataBytes = json.toString().getBytes("UTF-8");

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
    conn.setRequestProperty("Connection", "keep-alive");
    conn.setRequestProperty("Content-Length", "36");
    conn.setRequestProperty("api-version", apiVersion);
    conn.setRequestProperty("Authorization", accessToken);
    conn.setRequestProperty("Accept", "application/json, text/plain, */*");
    conn.setDoOutput(true);
    conn.getOutputStream().write(postDataBytes);