我正在尝试从here编写Azure AD用户身份验证代码。 我正在提交有效的客户端ID,用户名,密码,租户ID,资源ID。
它给了我以下错误:
java.util.concurrent.ExecutionException:com.microsoft.aad.adal4j.AuthenticationException:{" error":" invalid_request"," error_description":& #34; AADSTS90014:请求正文必须包含以下参数:' client_secret或client_assertion'。\ r \ nTrace ID:7f98c473-96f9-48bd-b1ee-73dad520c226 \ r \ n相关ID:35a8f4d9-bdb1- 4dbe-ac58-5c41473ee3d1 \ r \ n时间戳:2015-10-01 09:03:02Z"}
完整堆栈跟踪是:
输入用户名:xxxxxxx输入密码:xxxxxxx SLF4J:无法加载 class" org.slf4j.impl.StaticLoggerBinder"。 SLF4J:默认为 无操作(NOP)记录器实现SLF4J:请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder进一步说明 细节。 java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: {"错误":" invalid_request"," error_description":" AADSTS90014:The 请求正文必须包含以下参数:' client_secret或 client_assertion'。\ r \ nTrace ID: 7f98c473-96f9-48bd-b1ee-73dad520c226 \ r \ n相关ID: 35a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1 \ r \ n时间戳:2015-10-01 09:03:02Z"} at java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:188)at PublicClient.getAccessTokenFromUserCredentials(PublicClient.java:47) 在PublicClient.main(PublicClient.java:27)引起: com.microsoft.aad.adal4j.AuthenticationException: {"错误":" invalid_request"," error_description":" AADSTS90014:The 请求正文必须包含以下参数:' client_secret或 client_assertion'。\ r \ nTrace ID: 7f98c473-96f9-48bd-b1ee-73dad520c226 \ r \ n相关ID: 35a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1 \ r \ n时间戳:2015-10-01 09:03:02Z"} at com.microsoft.aad.adal4j.AdalTokenRequest.executeOAuthRequestAndProcessResponse(AdalTokenRequest.java:97) 在 com.microsoft.aad.adal4j.AuthenticationContext.acquireTokenCommon(AuthenticationContext.java:770) 在 com.microsoft.aad.adal4j.AuthenticationContext.access $ 1(AuthenticationContext.java:757) 在 com.microsoft.aad.adal4j.AuthenticationContext $ 1.call(AuthenticationContext.java:130) 在 com.microsoft.aad.adal4j.AuthenticationContext $ 1.call(AuthenticationContext.java:1) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)
如何解决异常?
答案 0 :(得分:0)
AzureAD支持两种流程。一个需要client_secret或client_assertion而另一个不需要。这些有时被称为公共或机密。如果在向Azure添加应用程序时,您选择“Web App”AzureAD需要一个机密客户端,必须显示“证明”以获取令牌。另一方面,公众不需要证明。