【问题标题】:The request body must contain the following parameter: 'client_id'请求正文必须包含以下参数:'client_id'
【发布时间】:2021-11-22 09:18:31
【问题描述】:

我有一个简单的 Spring Boot 应用程序,我在我的 build.gradle.kts 中使用这些依赖项用于我的 oauth2 和 azure ad:

实现(“org.springframework.boot:spring-boot-starter-oauth2-client:2.4.2”) 实现(“com.azure.spring:azure-spring-boot-starter-active-directory:3.9.0”)

我有一个 RestController,实际上并没有太多。它应该做的是,当我调用 localhost:8080/ 我想调用 azure ad 并且它应该返回我的访问令牌(不在控制器中,但至少我不想得到以下句子中提到的任何错误。) .

@GetMapping("/")
fun helloWorld(): String? {
    return "Hello Users!"
}

但是,在 chrome 的网络选项卡中,我看到有几个针对 login.microsoftonline.com 的调用。我什至收到了其中一个请求中的代码。到目前为止看起来还不错。

最后一次调用失败并返回以下错误:

[invalid_request] AADSTS900144:请求正文必须包含以下参数:“client_id”。跟踪 ID:XXXXXX 相关 ID:XXXXXX 时间戳:2021-09-30 13:15:30Z

我不明白,因为在上面提到的请求之一中,包含了 client_id。所以它可以正确地从我的 application.properties 中加载出来。我还在 app.props 中设置了tenant_id 和 secret。

在谷歌上我找不到任何关于这个错误的有用信息,所以我希望你能帮助我:)

提前致谢!

【问题讨论】:

    标签: spring-boot azure-active-directory spring-oauth2 clientid


    【解决方案1】:

    这个错误通常有两个原因。

    1. 请求中缺少参数:'client_id',因此请确保身份验证请求包含所需的参数。

    2. 如果您点击令牌端点(即 https://login.microsoftonline.com/common/oauth2/token ),则内容类型设置不正确。确保内容类型为“application/x-www-form-urlencoded”作为请求正文中的标头。

    同时检查this so reference

    【讨论】:

    • 感谢您的回复 :) 问题是,我与拨打微软的电话没有任何关系。这一切都发生在上述库和 Spring Security 的幕后。这里的问题是,库以某种方式无法正确调用:/ 因此,为了解释,当我点击端点 localhost:8080/ -> 库应该使用我的 application.properties 中定义的属性调用 microsoft为了得到用户。他们实际上会打电话。唯一的问题是,不知何故,他们没有正确地执行请求......:/
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2020-12-29
    • 2015-10-04
    相关资源
    最近更新 更多