簡體   English   中英

狂飲摘要驗證不起作用

[英]Guzzle digest auth not working

我正在嘗試使用摘要作為身份驗證的API,當我使用curl命令通過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未經授權`響應:{“狀態”:false,“錯誤”:“未經授權”}

如何解決這個問題? 以及如何以正確的方式實現自定義處理程序的php?

我有同樣的問題,發現它可能取決於您的curl php擴展的版本。 我沒有升級它的可能,所以我不得不自己處理摘要身份驗證(基本上Wikipedia中的信息就足夠https://en.wikipedia.org/wiki/Digest_access_authentication )。

您發送第一個請求,並獲得代碼401和“ WWW-Authenticate”標頭的響應(它包含一些生成散列所需的值),然后僅生成“ Authorization”標頭並將其用於您的槍口請求中。

抱歉,目前無法提供代碼示例,如果您自己不做的話,可能以后再說:)

我有同樣的問題,我注意到根本沒有安裝php-curl擴展名。 安裝后,摘要身份驗證有效。 要安裝擴展類型:

sudo apt-get install php-curl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM