我正在尝试按照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格式读取响应。
答案 0 :(得分:1)
@Anand,根据Microsoft Graph error responses and resource types,回复代码403表示下面的 Forbidden
。
拒绝访问所请求的资源。用户可能没有足够的权限。
请转到Azure经典门户网站上AAD域中注册的应用程序的CONFIGURE
标签页,然后检查是否启用了足够的权限,请参阅下图。
答案 1 :(得分:0)
我得到了同样的错误,几天一直在努力。我注意到的是,即使我检查了Windows Azure Active Directory的所有权限,我仍然获得了403.因此,我删除了应用程序注册中的应用程序,并从头开始创建它,生成新的应用程序密钥和读取的回复URL。在必需的权限/ Windows Azure Active Directory中检查:
我现在可以成功致电me/memberOf
了。
希望它有所帮助。
答案 2 :(得分:0)
以下对我有用。 在活动目录应用注册 - > app - > settings-> permissions->启用委派权限以读取目录数据。保存并关闭刀片。同时单击“授予权限”并关闭刀片。 完成上述操作后,注销并使用新令牌重新登录到应用程序。 (猜测具有先前授权的令牌不会反映最新的权限更改,因此重新登录可能在我的情况下有效)