为什么我收到 "invalid_request": "no client authentication mechanism provided "的400响应?

问题描述 投票:2回答:1

我正在尝试对OneLogin的api进行JWT access_token验证,如下所述。此处. 我的代码如下。

const client_id = MY_CLIENT_ID
const client_secret = MY_CLIENT_SECRET
const token = MY_ONE_LOGIN_JWT_ACCESS_TOKEN

axios
  .post(
    "https://my-endpoint-dev.onelogin.com/oidc/2/token/introspection",
    { token, client_id, client_secret, token_type_hint: "access_token" },
    {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
      },
    }
  )
  .then((response) => {
    console.log("response");
    console.log(response);
  })
  .catch((err) => {
    console.log("err");
    console.log(err);
  });

端点似乎工作得很好,事实上,当JWT过期时,它给我一个错误说明,我需要更新我传递的令牌。然而,每当我使用有效的凭证和令牌发出如上所示的标准请求时,我都会得到以下错误响应。

{error: "invalid_request", error_description: "no client authentication mechanism provided"}

在所提供的页面上,没有任何文档描述当收到该错误时,请求有什么问题。从文档中,据我所知,我的请求格式正确。

我已经验证了OneLogin中的令牌端点被设置为POST,所以我的假设就是 client_secret 应该在正文中的内容被记录为正确的(尽管我尝试以Basic的方式来验证)。

OneLogin Configuration

我试图寻找一个解决方案,但唯一接近我所找到的建议,即 Content-Type 头信息可能没有被提供。我已经确保将其添加到头文件列表中,并已验证它显示在请求中,但错误仍然存在。

有什么想法,我可能遗漏了什么?

EDIT:

试图做一个cURL请求 并收到了200个相同信息的回复。这让我相信是我的axios调用出了问题。

javascript request jwt openid-connect onelogin
1个回答
0
投票

当我没有提供client_id或client_secret时,我得到了这个消息。希望你能验证你的请求中是否真的发送了这两个信息。也许你可以尝试通过邮递员发送请求来仔细检查。

© www.soinside.com 2019 - 2024. All rights reserved.