【问题标题】:Graph API in SSO is not working in Azure ADSSO 中的图形 API 在 Azure AD 中不起作用
【发布时间】:2016-08-03 06:06:46
【问题描述】:

我正在尝试通过遵循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 版本更改为 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();
}

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

【问题讨论】:

  • 这个问题你解决了吗?
  • @Paul,我转移到其他项目,因为它的优先级较低。要回答你的问题,不。我会在有机会的时候解决这个问题。你有解决方案吗?
  • 在我的情况下授予 directory.readAll 和 group.readAll 权限有效。

标签: java azure azure-active-directory


【解决方案1】:

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

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

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

【讨论】:

  • 我听从了你的指示。我选择了除第一个选项之外的所有选项。即便如此,它也没有奏效。我仍然遇到同样的错误。我是否需要更改 api 版本?我正在使用这个 URL - graph.windows.net/ppceses.onmicrosoft.com/…。请指教
  • 同样的问题,我已启用所有选项的权限,但我仍然收到 403 错误。
【解决方案2】:

我遇到了同样的错误,这几天一直在苦苦挣扎。我注意到的是,即使我检查了 Windows Azure Active Directory 的所有权限,我仍然得到 403。因此,我在 App Registrations 中删除了该应用程序并从头开始重新创建它,生成了新的应用程序密钥并读取了回复 url。在Required Permissions/Windows Azure Active Directory 中检查:

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

我现在可以成功拨打me/memberOf

希望对您有所帮助。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 2020-09-21
      • 2021-02-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多