引起:java.net.MalformedURLException:没有使用PublicClient样本进行ADAL的协议

时间:2015-08-05 12:59:21

标签: java azure active-directory adal

我想和Microsoft Azure's Active Directory Library for Java一起玩。在我从github中提取代码并作为maven项目导入Eclipse之后,构建并执行PublicClient.java示例文件后,我得到以下异常:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.util.concurrent.ExecutionException: java.net.MalformedURLException: no protocol: 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at src.main.java.PublicClient.getAccessTokenFromUserCredentials(PublicClient.java:36)
    at src.main.java.PublicClient.main(PublicClient.java:23)
Caused by: java.net.MalformedURLException: no protocol: 
    at java.net.URL.<init>(URL.java:585)
    at java.net.URL.<init>(URL.java:482)
    at java.net.URL.<init>(URL.java:431)
    at com.microsoft.aad.adal4j.HttpHelper.openConnection(HttpHelper.java:110)
    at com.microsoft.aad.adal4j.HttpHelper.executeHttpGet(HttpHelper.java:43)
    at com.microsoft.aad.adal4j.HttpHelper.executeHttpGet(HttpHelper.java:38)
    at com.microsoft.aad.adal4j.MexParser.getWsTrustEndpointFromMexEndpoint(MexParser.java:87)
    at com.microsoft.aad.adal4j.AuthenticationContext.processPasswordGrant(AuthenticationContext.java:852)
    at com.microsoft.aad.adal4j.AuthenticationContext.access$0(AuthenticationContext.java:839)
    at com.microsoft.aad.adal4j.AuthenticationContext$1.call(AuthenticationContext.java:129)
    at com.microsoft.aad.adal4j.AuthenticationContext$1.call(AuthenticationContext.java:1)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我已正确指定了我的客户端ID,用户名和密码。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我重现你的问题。问题是示例PublicClient.java是一个单独的Maven项目,带有Microsoft AAD Library for Java。

要解决此问题,您需要将示例项目单独导入Eclipse,如下所示。

enter image description here

然后运行maven install来安装示例项目的所有依赖项并执行它。它无一例外地工作。

答案 1 :(得分:0)

感谢Peter Pan - MSFT,我能够解决这个问题。问题是我使用的是Microsoft帐户,而不是服务帐户。在我设置服务帐户后,我能够让样本正常运行。

要设置服务帐户,请打开the azure portal,转到所有服务,打开订阅,选择订阅,向下滚动并点击&#34;角色&#34;并点击&#34; Reader&#34; (或您喜欢的任何其他类别,但要确保它具有适当的访问权限)并单击&#34; +&#34;添加一个不应该是微软用户的新用户。