Я пишу бэкэнд весенней загрузки на java, конечные точки которого защищены okta. Приложение использует интеграцию с сервисным приложением okta api, поскольку только внешний интерфейс и никогда пользователь не извлекает данные из него.
Чтобы получить действительный токен доступа из API okta, я выполнил следующие шаги: https://developer.okta.com/docs/guides/implement-grant-type/clientcreds/main/#request-for-token
К сожалению, все мои попытки приводят к ошибке.
Моя конфигурация почтальона:
Конечная точка Okta API: https://dev-61814681.okta.com/oauth2/default/v1/токен
Метод аутентификации: Базовая аутентификация с идентификатором клиента в качестве имени пользователя и секретом клиента в качестве пароля
Заголовки:
accept = application/json
cache-control = no-cache
content-type = application/x-www-form-urlencoded
Кузов:
grant-type = client_credentials
scope = MyDefault
Ответ: ошибка 400, неверный запрос
Было бы неплохо, если бы кто-то мог подтолкнуть меня в правильном направлении с этим.
Curl --location 'dev-61814681.okta.com/oauth2/default/v1/token' \ --header 'accept: application/json' \ --header 'cache-control: no-cache' \ - -header 'тип содержимого: application/x-www-form-urlencoded' \ --header 'Авторизация: Basic MG9h[...]OQ==' \ --header 'Cookie: DT=DI1tM8NGUbgTbO9pYl_O16rEA; JSESSIONID=C1CEE3CAB5B197C225A8928586850E9E; t=default' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scope=MyDefault'
<html> <head><title>400 неверный запрос</title></head> <body> <center><h1>400 неверный запрос</h1></center> </body> </html>
Это должно быть grant-type вместо того, что вы написали (крупным шрифтом).
Кроме того, убедитесь, что вы определили область «MyDefault» в своем приложении API Okta и что у него есть необходимые разрешения для вашего клиента для доступа к конечным точкам, которые ему требуются.
Надеюсь, опечатка решит проблему в этом случае.
Исправил опечатку, но ничего не изменилось. Область MyDefault определяется следующими параметрами: UserConsent = No, BlockServices = No, DefaultScope = No, MetadataPublish = Yes.
Я смог решить свою проблему, выполнив следующие действия:
Я взял cURL, изображенный на https://developer.okta.com/docs/guides/implement-grant-type/clientcreds/main/#request-for-token
После этого я вставил свой домен Okta, добавил свою авторизацию (идентификатор клиента и секрет клиента, записанные в одной строке, разделенные ':' и закодированные как base64) и обновил область действия с customScope на мою собственную пользовательскую область.
Я импортировал все это в почтальон, нажав кнопку импорта и вставив необработанный текст.
Теперь все работает нормально.
Вы видите разницу сейчас в вашем теле?
Да спасибо. Вы указали мне правильное направление.
Обратите внимание, что вы используете здесь «customScope», но когда вас спросили, вы сказали, что «MyDefault» — это ваша текущая конфигурация. Именно поэтому раньше он вообще не выдавал никаких полезных ошибок.
Не могли бы вы показать результирующий запрос (без заголовка авторизации)? Это может помочь понять, что с ним не так. Если вы делаете это в Postman, вы должны просто получить команду cURL для своего запроса.