2016-08-03 82 views
0

我正试图通过遵循此azure tutorial来开发具有SSO的Java Web应用程序。我在Azure中创建了一个帐户并创建了一个AD。在Tomcat中开发和部署代码。当我尝试访问该页面时,出现以下错误SSO中的图形API在Azure AD中不起作用

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版本更改为1.6。即使这样也行不通。

更多的分析:

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

HttpClientHelper.getResponseStringFromConn(conn, true); 

实际的方法来写响应转换成字符串:

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

实际的问题是在图形API,我们试图读取该字符串格式的响应。

+0

你解决了这个问题吗? – Paul

+0

@Paul,因为它的优先级低,我转移到其他项目上。要回答你的问题,不,我会在有机会的时候处理这​​件事。你有解决方案吗? – Anand

回答

1

@Anand根据Microsoft Graph error responses and resource types,响应码403意味着Forbidden下面。

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

请移动到Azure经典门户上的AAD域中注册的应用程序的CONFIGURE选项卡,然后检查是否启用了足够的权限,请参见下图。

enter image description here

+0

我遵照你的指示。我选择了除第一个之外的所有选项。即使这样也行不通。我仍然收到同样的错误。我是否需要更改api版本?我正在使用此网址 - https://graph.windows.net/ppceses.onmicrosoft.com/users?api-version=2013-04-05。请告知 – Anand

+0

同样的问题,我已启用所有选项的权限,但我仍然得到403错误。 –

0

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

  • 登录和读取用户配置文件
  • 访问目录作为登录用户

我现在可以叫me/memberOf成功。

希望它有帮助。

相关问题