【问题标题】:Microsoft Graph API , using ADAL4JMicrosoft Graph API,使用 ADAL4J
【发布时间】:2019-01-10 14:49:04
【问题描述】:

我正在尝试创建一个简单的应用程序,允许我在 Azure Active Directory 上列出和编辑用户帐户。

这些用户是通过 Azure AD B2C 添加到目录中的。

我跟踪了一些示例,经过几个小时的研究,我想出了一段简单的代码,它尝试从 Azure AD 获取令牌,并使用该令牌尝试查询 Graph API 以获取用户列表.

我看过的样本是:

https://github.com/AzureAD/azure-activedirectory-library-for-java

https://github.com/Azure-Samples/active-directory-java-native-headless

还有图书馆 WIKI

https://github.com/AzureAD/azure-activedirectory-library-for-java/wiki

但由于某种原因,我从 azure 获得了 401 Unauthenticated Status 代码,并显示以下错误消息:

{'odata.error':{'code':'Authentication_MissingOrMalformed','message':{'lang':'en','value':'Access Token missing or malformed.'},'date':'2018-08-02T18:39:48','requestId':'7ddb7d55-2074-4124-9863-a19626a6b49f','values':null}}

即使在发送授权标头时。

有一件事是,为了在 Azure AD 中验证 APP,我使用的是在 Azure AD App Registrations 中注册的 APP。

我已经编译了一个包含所有需求的示例项目,可以在 github 上找到

https://github.com/pedrorochaorg/Microsoft-ADAL-Sample

有人可以告诉我实现这一目标的正确方法吗?

【问题讨论】:

    标签: java azure-active-directory azure-ad-graph-api adal4j


    【解决方案1】:

    根据错误信息Authentication_MissingOrMalformed。您获得的访问令牌不适用于相应的资源。

    根据您提到的代码,资源 url 应该是 https://graph.windows.net 而不是 APP_ID_URL

     String resourceUrl = "https://graph.windows.net";
     Future<AuthenticationResult> result = context.acquireToken(
                    resourceUrl,    
                    new ClientCredential(APP_ID, APP_SECRET),
                    null
            );
    

    您正在使用 Azure AD 图形 API。您只需为Azure Windows Azure Active Directory设置权限,不要忘记授予权限。

    以下代码需要空格和标题Accept:application/json

    conn.setRequestProperty("Accept","application/json");
    conn.setRequestProperty("Authorization", result.get().getAccessTokenType() + " "+ result.get().getAccessToken());
    

    测试结果:

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2019-05-03
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多