【发布时间】:2020-08-23 00:02:40
【问题描述】:
我正在尝试针对 OneLogin 的 api 验证 JWT access_token,如 here 所述。我的代码如下:
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 中的 Token Endpoint 设置为 POST,因此我认为 client_secret 应该在正文中的假设被记录为正确(尽管我确实尝试将其作为 Basic 来验证):
我已尝试寻找解决方案,但我发现的唯一接近的建议是可能未提供 Content-Type 标头。我已确保将其添加到标头列表中并已验证它显示在请求中,但错误仍然存在。
对我可能在这里遗漏的内容有什么想法吗?
编辑:
尝试执行 cURL 请求并收到带有相同信息的 200 响应。让我相信我的 axios 调用不正确。
【问题讨论】:
标签: javascript request jwt openid-connect onelogin