Ошибка авторизации API Microsoft Graph: «Неверный размер параметра Code_Challenge».Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ошибка авторизации API Microsoft Graph: «Неверный размер параметра Code_Challenge».

Сообщение Anonymous »

Я пытаюсь создать токен доступа через поток PKCE для вызова API Microsoft Graph.
Я следую этому msdoc: Платформа идентификации Microsoft и поток кода авторизации OAuth 2.0 — Microsoft Энтра | Microsoft Docs
Но я получаю сообщение об ошибке, как показано ниже:
AADSTS501491: Invalid size of Code_Challenge parameter.

Чтобы сгенерировать code_challenge, я использую приведенный ниже код PHP со ссылкой на приведенную выше документацию.
Code_challenge, сгенерированный моим кодом, составляет 43 символа, что соответствует это та же строка, что и значение, сгенерированное этим инструментом с использованием того же code_verifier, что не так?
Для тестирования я напрямую сохранил значение, сгенерированное указанным выше инструментом, в $codeChallenge в следующем примере. код и получил ту же ошибку.

public function generateUrl()
{
// cf. https://datatracker.ietf.org/doc/html/rfc7636#section-4
$codeVerifier = $this->generateCodeVerifier();
$codeChallenge = $this->generateCodeChallenge($codeVerifier);

$fields = [
'tenant' => $tenantId,
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'response_type' => 'code',
'response_mode' => 'query',
'scope' => 'User.Read Directory.Read.All Group.Read.All GroupMember.Read.All',
'code_challenge' => $codeChallenge,
'code_challenge_method' => 'S256',
];

$baseUrl = "https://login.microsoftonline.com/${ten ... /authorize";

return $baseUrl . '?' . http_build_query($fields);
}

private function generateCodeVerifier() {
$randomString = random_bytes(32);
$urlSafeString = strtr(base64_encode($randomString), '+/', '-_');
return rtrim($urlSafeString, '=');
}

private function generateCodeChallenge($codeVerifier) {
$hashedVerifier = hash('sha256', $codeVerifier, true);
$urlSafeString = strtr(base64_encode($hashedVerifier), '+/', '-_');
return rtrim($urlSafeString, '=');
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ge-paramet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»