Жрет дайджест аутентификации не работает

Я пытаюсь сделать API, который использует дайджест в качестве аутентификации. Когда я получаю доступ к API через командную строку curl с помощью этой команды, это работает

curl --digest --user website:website http://localhost/api/test/users

но при запуске API-клиента с помощью Жрут 6 библиотека php, использующая этот код

$handler = new GuzzleHttp\Handler\CurlHandler();
$stack = GuzzleHttp\HandlerStack::create($handler); // Wrap w/ middleware

$client = new GuzzleHttp\Client(['base_uri' => 'http://localhost', 'handler' => $stack]);
try {
$request = new GuzzleHttp\Psr7\Request('GET', $req_uri, [
'auth' => ['website', 'website', 'digest']
]);
$response = $client->send($request, ['timeout' => 2]);
} catch (Exception $e) {
echo $e->getMessage();
die();
}

return $response;

Это не работает, говорит

401 Unauthorized` response: {«status»: false, «error»: «Unauthorized»}

как это исправить? а как правильно реализовать нестандартный обработчик жрет php?

0

Решение

У меня была такая же проблема, понял, что это может зависеть от версии вашего curl php extension. У меня не было возможности обновить его, поэтому мне пришлось самостоятельно обрабатывать дайджест (в основном информации в Википедии достаточно) https://en.wikipedia.org/wiki/Digest_access_authentication).

Вы отправляете первый запрос и получаете ответ с кодом 401 и заголовком «WWW-Authenticate» (он содержит некоторые значения, которые вам понадобятся для генерации ваших хэшей), затем просто генерируете заголовок «Авторизация» и используете его в запросах на жадность.

Извините, я не могу предоставить пример кода на данный момент, может быть позже, если вы не сделаете это сами 🙂

0

Другие решения

У меня была та же проблема, и я заметил, что расширение php-curl вообще не было установлено. После его установки дайджест auth работал. Чтобы установить расширение типа:

sudo apt-get install php-curl

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector