SSO中的图形API在Azure AD中不起作用

时间:2016-08-03 06:06:47

标签: java azure azure-active-directory

我正在尝试按照azure tutorial开发一个带有SSO的Java Web应用程序。我在Azure中创建了一个帐户并创建了一个AD。在Tomcat中开发和部署代码。当我尝试访问该页面时,我收到以下错误

Exception - java.io.IOException: Server returned HTTP response code: 403 for URL: https://graph.windows.net/ppceses.onmicrosoft.com/users?api-version=2013-04-05

我找不到足够的答案来解决这个错误。我将api-version更改为1.6。即便如此,它也没有用。

更多分析:

排除故障后,我发现已登录的用户信息已在Sessions对象中提供。它在尝试读取响应并转换为String对象时出错。以下是调用方法,它出错。

HttpClientHelper.getResponseStringFromConn(conn, true);

将响应写入String的实际方法:

public static String getResponseStringFromConn(HttpURLConnection conn, boolean isSuccess) throws IOException {

    BufferedReader reader = null;
    if (isSuccess) {
        reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    } else {
        reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
    }
    StringBuffer stringBuffer = new StringBuffer();
    String line = "";
    while ((line = reader.readLine()) != null) {
        stringBuffer.append(line);
    }

    return stringBuffer.toString();
}

实际问题出在Graphic API上,我们尝试以String格式读取响应。

3 个答案:

答案 0 :(得分:1)

@Anand,根据Microsoft Graph error responses and resource types,回复代码403表示下面的 Forbidden

  

拒绝访问所请求的资源。用户可能没有足够的权限。

请转到Azure经典门户网站上AAD域中注册的应用程序的CONFIGURE标签页,然后检查是否启用了足够的权限,请参阅下图。

enter image description here

答案 1 :(得分:0)

我得到了同样的错误,几天一直在努力。我注意到的是,即使我检查了Windows Azure Active Directory的所有权限,我仍然获得了403.因此,我删除了应用程序注册中的应用程序,并从头开始创建它,生成新的应用程序密钥和读取的回复URL。在必需的权限/ Windows Azure Active Directory中检查:

  • 登录并阅读用户个人资料
  • 以登录用户身份访问目录

我现在可以成功致电me/memberOf了。

希望它有所帮助。

答案 2 :(得分:0)

以下对我有用。 在活动目录应用注册 - > app - > settings-> permissions->启用委派权限以读取目录数据。保存并关闭刀片。同时单击“授予权限”并关闭刀片。 完成上述操作后,注销并使用新令牌重新登录到应用程序。 (猜测具有先前授权的令牌不会反映最新的权限更改,因此重新登录可能在我的情况下有效)