Почему я получаю ответ 400: «invalid_request»: «Механизм аутентификации клиента не предусмотрен»? - PullRequest
2 голосов
/ 07 мая 2020

Я пытаюсь проверить JWT access_token на соответствие API OneLogin, как описано здесь . Мой код выглядит следующим образом:

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 должен быть в теле задокументирован как правильный (хотя я пробовал его как Basi c просто для проверки):

OneLogin Configuration

Я попытался найти решение, но единственное, что я обнаружил, говорит о том, что заголовок Content-Type может не предоставляться. Я обязательно добавил это в список заголовков и проверил, что он отображается в запросе, но ошибка все еще сохраняется.

Есть какие-нибудь мысли о том, чего мне здесь может не хватать?

EDIT:

Попытка выполнить запрос cURL и получила ответ 200 с той же информацией. Заставляя меня поверить, что это что-то с вызовом топора ios, которое у меня неверно.

1 Ответ

0 голосов
/ 13 мая 2020

Я получаю это сообщение, когда не предоставляю ни client_id, ни client_secret. Надеюсь, вы сможете подтвердить, что действительно отправляете оба в своем запросе. Может быть, вы можете попробовать запрос через почтальона, чтобы перепроверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...