Skip to content

Digest proxy authentication does not work in 1.10.1 #3095

@steep8

Description

@steep8

It seems developers forgot "break" in "switch",
file Poco/Net/HTTPClientSession.cpp

Please take a look at this code fragment:

	case PROXY_AUTH_HTTP_DIGEST:
		if (HTTPCredentials::hasDigestCredentials(request))
		{
			_proxyDigestCreds.updateProxyAuthInfo(request);
		}
		else
		{
			_proxyDigestCreds.setUsername(proxyConfig.username);
			_proxyDigestCreds.setPassword(proxyConfig.password);
			proxyAuthenticateDigest(request);
		}

	case PROXY_AUTH_NTLM:

whole function:

void HTTPClientSession::proxyAuthenticateImpl(HTTPRequest& request, const ProxyConfig& proxyConfig)
{
	switch (proxyConfig.authMethod)
	{
	case PROXY_AUTH_NONE:
		break;

	case PROXY_AUTH_HTTP_BASIC:
		_proxyBasicCreds.setUsername(proxyConfig.username);
		_proxyBasicCreds.setPassword(proxyConfig.password);
		_proxyBasicCreds.proxyAuthenticate(request);
		break;
	case PROXY_AUTH_HTTP_DIGEST:
		if (HTTPCredentials::hasDigestCredentials(request))
		{
			_proxyDigestCreds.updateProxyAuthInfo(request);
		}
		else
		{
			_proxyDigestCreds.setUsername(proxyConfig.username);
			_proxyDigestCreds.setPassword(proxyConfig.password);
			proxyAuthenticateDigest(request);
		}

	case PROXY_AUTH_NTLM:
		if (_ntlmProxyAuthenticated)
		{
			_proxyNTLMCreds.updateProxyAuthInfo(request);
		}
		else
		{
			_proxyNTLMCreds.setUsername(proxyConfig.username);
			_proxyNTLMCreds.setPassword(proxyConfig.password);
			_proxyNTLMCreds.setHost(proxyConfig.host);
			proxyAuthenticateNTLM(request);
			_ntlmProxyAuthenticated = true;
		}
	}
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions