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

时间:2017-03-20 10:50:34

标签: java azure spring-security azure-ad-graph-api

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

但是,当我想列出用户组成员身份时,我收到错误代码403.当我从Azure AD Graph Explorer手动测试时,它工作正常。

这是我正在处理的代码:

    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);

Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream()," UTF-8"));

我在刷新令牌的Microsoft示例中得到的访问令牌。相同的功能适用于其他API方法,例如/ users /。我想在Azure中需要配置一些参数以进行组成员身份访问。但是,当我使用同一个用户登录时,它可以在Graph explorer中正常工作。(https://graphexplorer.azurewebsites.net/)。

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

谢谢, 伊戈尔

1 个答案:

答案 0 :(得分:0)

请参阅此文件:Permission scopes | Graph API concepts

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