【问题标题】:Guzzle digest auth not workingGuzzle 摘要身份验证不起作用
【发布时间】:2016-09-04 19:17:47
【问题描述】:

我正在尝试制作一个使用摘要作为身份验证的 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,"error":"Unauthorized"}

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

【问题讨论】:

    标签: php rest curl digest guzzle6


    【解决方案1】:

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

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

    抱歉,我目前无法提供代码示例,如果您不自己制作,可能稍后再提供:)

    【讨论】:

      【解决方案2】:

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

      sudo apt-get install php-curl

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        • 2013-08-29
        相关资源
        最近更新 更多