Digest authentication używając POCO

0

Cześć,

Mam problem z kodem wykorzystującym POCO.
Zgodnie z dokumentacją POCO wspiera digest authentication.
Zrobiłem zgodnie z instrukcją, ale nie jestem w stanie się zalogować tam gdzie stosowany jest digest authentication.
Naskrobałem, wiec test (gtest) pokazujący problem (pełen kod, wystarczy dodać biblioteki POCO i gtest):

#include "UnitTest.h"
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HTTPSClientSession.h>
#include <Poco/Net/HTTPClientSession.h>
#include <Poco/StreamCopier.h>
#include <Poco/Net/HTTPCredentials.h>

using namespace Poco::Net;

TEST(PocoDigestAuthTest, HttpBibOrgTest) {
    HTTPClientSession session;
    session.setHost("httpbin.org");

    HTTPRequest request(
        "GET", 
        // "http://httpbin.org/basic-auth/user/passwd", // basic
        "http://httpbin.org/digest-auth/auth/user/passwd",  // digest
        HTTPMessage::HTTP_1_1);
    session.sendRequest(request);

    HTTPResponse response;
    std::istream& firstResponseStream = session.receiveResponse(response);
    std::stringstream firstStrStream;
    Poco::StreamCopier::copyStream(firstResponseStream, firstStrStream);

    ASSERT_EQ(HTTPResponse::HTTP_UNAUTHORIZED, response.getStatus());

    HTTPCredentials creds("user", "passwd");
    creds.authenticate(request, response);
    session.sendRequest(request);

    std::istream& bodyStream = session.receiveResponse(response);
    EXPECT_NE(HTTPResponse::HTTP_UNAUTHORIZED, response.getStatus());
    EXPECT_EQ(HTTPResponse::HTTP_OK, response.getStatus());

    std::stringstream strStream;
    Poco::StreamCopier::copyStream(bodyStream, strStream);
    EXPECT_NE("", strStream.str());
}

Test nie przechodzi już na EXPECT_NE(HTTPResponse::HTTP_UNAUTHORIZED.
Jak zmienię uri na logowanie na basic authatentication, wszystko działa.

To samo pytanie na stackoverflow.

0

Crap wygląda na to, że to jest bug POCO.
Przynajmniej ktoś z mojego wątku na stackoverflow zrobił z tego bug report.

1 użytkowników online, w tym zalogowanych: 0, gości: 1