无法使用 adal4j Api 获取 Azure 令牌

Not able to get Azure token using adal4j Api

我正在尝试从 Microsoft 图形中读取用户 profile/image 并使用 adal4j-1.5。0.jar 生成天蓝色令牌,以便基于令牌我可以调用图形 API/Microsoft钻研

我在下面的代码中遇到问题。在不生成令牌或任何异常的情况下,在下面的行之后移动到最终阻塞很简单。 "Future future = context.acquireToken(resourceUri, credential, null);"

String clientId = "clientid";
String clientSecret = "cleintsecret";
String resourceUri = "https://graph.microsoft.com/v1.0/me";

String redirectUri = "http://localhost:9082/contextroot";

String authorityUri ="https://login.microsoftonline.com/{tenent id}/oauth2/authorize";


AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
    service = Executors.newFixedThreadPool(1);
    context = new AuthenticationContext(authorityUri, false, service);
    ClientCredential credential = new ClientCredential(clientId,clientSecret);

    Future<AuthenticationResult> future = context.acquireToken(resourceUri, credential, null);



    result = future.get();
}
finally {
    service.shutdown();
}

好像adal4j-1.5.0的一些依赖也没有下载,请检查你项目中的jar包文件。根据我的测试,如果我使用 adal4j 1.5.0。 我发现项目中缺少 adal4j-1.5.0 的一些依赖项。然后我无法获得访问令牌。

但是如果我使用 adal4j 1.0.0,它对我来说工作正常。如果版本 1.0.0 是可接受的,您可以使用它作为解决方法或手动添加依赖项。

测试演示代码:

 private static final String APP_ID = "clientId";
 private static final String APP_SECRET = "secret key";
 private static final String TENATID = "xxxxx";
 public static void main(String[] args) throws Exception {
 String authority = "https://login.microsoftonline.com/"+TENATID; 
 String resourceUrl = "https://graph.microsoft.com"; //Microsoft graph. AD graph: https://graph.windows.net
 ExecutorService service = Executors.newFixedThreadPool(1);
 AuthenticationContext context = new AuthenticationContext(authority, true, service);
        // Acquire Token
 Future<AuthenticationResult> result = context.acquireToken(
                resourceUrl,
                new ClientCredential(APP_ID, APP_SECRET),
                null
        );
        String token = result.get().getAccessToken();
        System.out.println(token);
    }