Onelogin и ID Token: запрос на грант недействителен

Я использую идентификатор подключения для работы с входом в rstudio. После получения кода API возвращает ошибку: {"error" : "invalid_grant", "error_description": "запрос на грант недействителен"} и я понятия не имею, почему:

$ch=curl_init();
$header = array('Authorization: Basic '.base64_encode($client_id.':'.$secret), 'Content-Type: application/x-www-form-urlencoded');
$post = array('grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => 'MY_URL');
$url = "https://eif-til.onelogin.com/oidc/token";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$result = curl_exec($ch);

Все введенные переменные в порядке, полученный код авторизации в порядке и передается как есть. На стороне Onelogin все настроено как надо. Мое подозрение связано с кодом PHP Curl, но я не знаю, что отсутствует / неправильно


person igor    schedule 28.06.2018    source источник


Ответы (2)


Ваш заголовок Content-Type неверен:

$header = array('Authorization: Basic '.base64_encode($client_id.':'.$secret), 'Content-Type=application/x-www-form-urlencoded');

должен прочесть:

$header = array('Authorization: Basic '.base64_encode($client_id.':'.$secret), 'Content-Type: application/x-www-form-urlencoded');

то есть с двоеточием, а не со знаком «=» между именем и значением.

person Hans Z.    schedule 28.06.2018
comment
Привет спасибо. Я отредактировал исходное сообщение. К сожалению, результат такой же. - person igor; 28.06.2018

Вы также можете получить ответ «запрос на предоставление недействителен», если вы используете PKCE и либо пропускаете параметр code_verifier, либо он неверен (включая случаи, когда code_challenge был сгенерирован неправильно на предыдущем шаге).

person Jamie    schedule 07.12.2018