Guzzle摘要认证不起作用

时间:2016-05-10 01:30:13

标签: php rest curl digest guzzle6

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

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

但是当使用 Guzzle 6 php库运行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 Unauthorized`回复:{" status":false,"错误":"未经授权"}

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

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现它可能取决于你的curl php扩展版本。我没有可能升级它,所以我必须自己处理digest auth(基本上维基百科中的信息足够https://en.wikipedia.org/wiki/Digest_access_authentication)。

您发送第一个请求并获得代码为401和“WWW-Authenticate”标题的响应(它包含生成哈希所需的一些值),然后生成“授权”标题并在您的guzzle中使用它请求。

很抱歉,我现在无法提供代码示例,如果你自己不做,可能会在以后提供:)

答案 1 :(得分:0)

我遇到了同样的问题,并且发现根本没有安装php-curl扩展名。安装后,摘要身份验证有效。要安装扩展程序类型:

sudo apt-get install php-curl

相关问题