Guzzle摘要验证不起作用


Guzzle digest auth not working

我正在尝试制作一个使用摘要作为身份验证的API,当我使用这个命令通过curl命令行访问API时,它的工作是

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

但是当使用Guzzle6php库运行api客户端时,使用此代码

$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未授权`response:{"status":false,"error":"Unauthorized"}

如何解决这个问题?以及如何以正确的方式实现自定义处理程序guzzlephp?

我也遇到了同样的问题,发现这可能取决于curl php扩展的版本。我没有可能升级它,所以我不得不自己处理摘要身份验证(基本上维基百科中的信息就足够了https://en.wikipedia.org/wiki/Digest_access_authentication)。

您发送第一个请求并获得代码为401的响应和"WWW-Authenticate"标头(其中包含生成哈希所需的一些值),然后只生成"Authorization"标头并在您的狂饮请求中使用它。

很抱歉,我现在不能提供一个代码示例,也许以后,如果你自己不做的话:)

我遇到了同样的问题,我注意到根本没有安装php curl扩展。安装后,摘要身份验证工作。安装扩展类型:

sudo apt-get install php-curl