Java Microsoft图形API,使用ADAL4J

Java Microsoft图形API,使用ADAL4J,java,azure-active-directory,azure-ad-graph-api,adal4j,Java,Azure Active Directory,Azure Ad Graph Api,Adal4j,我正在尝试创建一个简单的应用程序,允许我列出和编辑Azure Active Directory上的用户帐户 这些用户是通过Azure AD B2C添加到目录的 我跟踪了一些示例,经过几个小时的研究,我找到了一段简单的代码,试图从Azure AD获取令牌,并使用该令牌尝试查询Graph API以获取用户列表 我查看的样本是: 还有图书馆维基 但由于某些原因,我从azure获得了一个401未经验证的状态代码,并显示以下错误消息: {'odata.error':{'code':'Authenti

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

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

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

我查看的样本是:

还有图书馆维基

但由于某些原因,我从azure获得了一个401未经验证的状态代码,并显示以下错误消息:

{'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中验证应用程序,我使用的是在Azure AD应用程序注册中注册的应用程序

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


有人能告诉我实现这一点的正确方法吗?

根据错误消息
身份验证\u MissingOrMalformed
。您获得的访问令牌不适用于相应的资源

根据您提到的代码,资源url应该是
https://graph.windows.net
不是
应用程序ID\u URL

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

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