Azure AD 用户 使用 ADAL 4j 在 Java 中进行身份验证可提供"The request body must contain the following parameter: 'cl



我正试图从这里编写Azure AD用户身份验证代码。我正在提交有效的客户端id,用户名,密码,租户id,资源id。

显示如下错误:

java . util . concurrent。ExecutionException: com.microsoft.aad.adal4j。AuthenticationException: {"error":"invalid_request","error_description":"AADSTS90014:请求体必须包含以下参数:'client_secret或client_assertion'。rnTrace ID: 7f98c473-96f9-48bd-b1ee-73dad520c226rnCorrelation ID: 35a8f4d9-bdb1- 4dbeac58 -5c41473ee3d1rnTimestamp: 2015-10-01 09:03:02Z"}

完整的堆栈跟踪是:

输入用户名:xxxxxxx输入密码:xxxxxxx SLF4J: Failed to load类"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:请求体必须包含以下参数:'client_secret或client_assertion"。 r nTrace ID:7 f98c473 - 96 - f9 - 48 - bd - b1ee - 73 dad520c226 r nCorrelation ID:35 a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1 r nTimestamp: 2015-10-0109:03:02Z "}java.util.concurrent.FutureTask.report (FutureTask.java: 122)java.util.concurrent.FutureTask.get (FutureTask.java: 188)PublicClient.getAccessTokenFromUserCredentials (PublicClient.java: 47)在PublicClient.main(PublicClient.java:27)com.microsoft.aad.adal4j.AuthenticationException:{"错误":"invalid_request"、"error_description":"AADSTS90014:请求体必须包含以下参数:'client_secret或client_assertion"。 r nTrace ID:7 f98c473 - 96 - f9 - 48 - bd - b1ee - 73 dad520c226 r nCorrelation ID:35 a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1 r nTimestamp: 2015-10-0109:03:02Z "}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.美元调用(AuthenticationContext.java: 130)在com.microsoft.aad.adal4j.AuthenticationContext 1.美元调用(AuthenticationContext.java: 1)在java.util.concurrent. futurettask .run(futurettask .java:262) atjava.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java: 1145)在java.util.concurrent.ThreadPoolExecutor Worker.run美元(ThreadPoolExecutor.java: 615)java.lang.Thread.run (Thread.java: 745)

AzureAD支持两种流。一个需要client_secret或client_assertion,另一个不需要。这些文件有时被称为公共文件或机密文件。如果在Azure中添加应用程序时选择"Web应用程序",则AzureAD需要一个机密客户端,其中必须显示"证明"才能获得令牌。而公开的,则不需要证明。

相关内容

最新更新