Запрос токена доступа OneLogin не работает (не авторизован) - PullRequest
0 голосов
/ 11 февраля 2019

Я просто настроил учетную запись OneLogin и хочу выполнить базовый тест из командной строки с помощью curl в соответствии с документами на

https://developers.onelogin.com/api-docs/1/getting-started/working-with-api-credentials

и

https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens-2

Я получаю "несанкционированный", несмотря на множество перестановок команды curl.Позвольте мне начать с команды curl, которая включена в документы во второй ссылке выше.Я делаю это:

curl 'https://api.us.onelogin.com/auth/oauth2/v2/token' \
-X POST \
-H "Authorization: client_id:144a1200f765fc67f1e, client_secret:d2dc92524169ee2" \
-H "Content-Type: application/json" \
-d '{
  "grant_type":"client_credentials"
}'

(поддельные client_id и client_secret включены, чтобы вы могли видеть форму, которую они принимают в моем вызове, то есть пробелы, кодирование и т. Д.)

Ответ:

{"status":{"error":true,"code":401,"type":"Unauthorized","message":"Authentication Failure"}}

Итак, я попробовал все, что мог придумать в терминах строки «Авторизация».Вот несколько примеров того, что я попробовал:

# base64 encode just the client_id and the client_secret (i.e., separately encoded and independent)
Authorization: client_id:zODU1NjYwOTRiZjYwOWFiOWJiZDQ1NGZjNg==, client_secret:WIxY2NjZWJjNWJlZDJlZDdiYmFiMDZiYTkyNzY3M2IxZQ==
# result: unauthorized

# base64 encode "Basic <client_id:client_secret>"
Authorization: Basic NjllZTIxZGRjOWU5YjFjY2NlYmM1YmVkMmVkN2JiYWIwNmJhOTI3NjczYjFl
# result: unauthorized

# use Basic without base64 encoding id and secret
Authorization: Basic 094bf609ab9bbd454fc6:c5bed2ed7bbab06ba927673b1e
# result: unauthorized

И наконец ... вот изображение страницы с учетными данными, чтобы продемонстрировать, что я действительно создал id и секрет в нужном месте.

screenshot of my OneLogin credentials redacted

1 Ответ

0 голосов
/ 13 февраля 2019

Мне стыдно дать решение этого ответа, и нет никакого способа ответить на вопрос, на который кто-либо мог ответить правильно, кроме как путем догадок.

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

Моя лучшая догадка, почему я поменял их местами, состоит в том, что они появляются в одном порядке (client_id, client_secret) в документах и ​​API, и они отображаются в обратном порядке в пользовательском интерфейсе OneLogin (client_secret, client_id).Вы можете увидеть это в моем OP.

Правильная команда curl - это первая команда, которую я дал в ответе: простой текстовый идентификатор клиента и секрет (не закодированный в base64).Вот снова для справки:

curl 'https://api.us.onelogin.com/auth/oauth2/v2/token' \
-X POST \
-H "Authorization: client_id:bed2ed7bbab06ba927673b1e, client_secret:385566094bf609ab9bbd454fc6" \
-H "Content-Type: application/json" \
-d '{
  "grant_type":"client_credentials"
}'
...