【问题标题】:Azure AD users Authentication in java using ADAL 4j gives "The request body must contain the following parameter: 'client_secret or client_assertion"使用 ADAL 4j 在 java 中的 Azure AD 用户身份验证给出“请求正文必须包含以下参数:'client_secret 或 client_assertion”
【发布时间】:2015-12-29 08:33:15
【问题描述】:

我正在尝试从 here 编写 Azure AD 用户身份验证代码。 我正在提交有效的客户 ID、用户名、密码、租户 ID、资源 ID。

它给了我以下错误:

java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: {"error":"invalid_request","error_description":"AADSTS90014:请求正文必须包含以下参数:'client_secret 或 client_assertion '.\r\n跟踪 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:加载失败 类“org.slf4j.impl.StaticLoggerBinder”。 SLF4J:默认为 无操作 (NOP) 记录器实现 SLF4J:请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder 了解更多 细节。 java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: {“错误”:“无效请求”,“错误描述”:“AADSTS90014: 请求正文必须包含以下参数:'client_secret 或 client_assertion'。\r\n跟踪 ID: 7f98c473-96f9-48bd-b1ee-73dad520c226\r\n相关 ID: 35a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1\r\n时间戳:2015-10-01 09: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: {“错误”:“无效请求”,“错误描述”:“AADSTS90014: 请求正文必须包含以下参数:'client_secret 或 client_assertion'。\r\n跟踪 ID: 7f98c473-96f9-48bd-b1ee-73dad520c226\r\n相关 ID: 35a8f4d9-bdb1-4dbe-ac58-5c41473ee3d1\r\n时间戳:2015-10-01 09: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.call(AuthenticationContext.java:130) 在 com.microsoft.aad.adal4j.AuthenticationContext$1.call(AuthenticationContext.java:1) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)

异常如何解决?

【问题讨论】:

  • 您好先生,您是如何配置 Azure AD 设置的,尤其是 Client ID 、key 和 Tenant ID?
  • @user3428513,您能否确认您是否使用以下链接中的示例代码进行身份验证:github.com/AzureAD/azure-activedirectory-library-for-java/blob/… 或者如果您没有使用,请提供您自己的代码 sn-p。根据我的理解,如果您可以打开服务请求来解决此问题会容易得多,因为在此线程的帖子中逐字逐句不清楚为什么遇到错误消息的意图。

标签: java authentication azure


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多