Cisco Jabber – “Cannot communicate with the Server” due to 407 Proxy Authentication Required

I recently had a very annoying issue. One of my end users wasn’t able to login to Cisco Jabber, and was receiving the “Cannot communicate with the Server” error message. Service discovery was working fine, _cisco-uds._tcp.domain.name resolved fine, as did the underlying servers.

UDS Discovery was working fine (User could successfully browse and authenticate to https://cucm.domain:8443/cucm-uds/user/USERID and retrieve the XML), and TFTP over HTTP 6970 was working fine to download the jabber-config.xml. Erasing the Jabber cache and uninstalling / reinstalling Jabber had no effect.

In the Jabber logs, any HTTP GET request was returning a 407 Proxy Authentication Required

HTTP response code 407 for request #7 to http://10.1.1.1:6970/CSFUSERID.cnf.xml
HTTP response code 407 for request #9 to http://10.1.1.1:6970/SPDefault.cnf.xml
Request #7 got status line: HTTP/1.1 407 Proxy Authentication Required
Initial retrieval of the TFTP files failed: TFTP_REQUEST_FAILED

This was even though the system proxy settings specified a proxy.pac that returns DIRECT for all internal domain names and IP Addresses. Disabling the Proxy altogether seemed to have no effect.

This issue was only affecting the user on this PC. As it turns out, there was an environment variable of “http_proxy” that was the cause of the issue. From a command-prompt you could run the following command:

C:WindowsSystem32> set http_proxy
http_proxy=http://proxyserver.domain.com:8080/

After trying to remove this variable, it still didn’t work

C:WindowsSystem32> set http_proxy=
C:WindowsSystem32> set http_proxy
Environment variable http_proxy not defined

It turns out, this was only removing the environment variable for this one command-prompt session. To REALLY clear the variable, I had to run cmd.exe as Administrator, and enter the following command:

C:WindowsSystem32> setx http_proxy "" -m

After running this, the http_proxy is persisently gone, and my user could authenticate to Jabber again, and Jabber LDAP directory successfully authenticates too.

Just another side tip: It seems the default setting for Jabber is now to use “UPN Discovery”, which if it detects a user is authenticated to a Windows domain, it will automatically populate the username field. This is extremely annoying for troubleshooting if you want to login to Jabber as a different user as the one who is logged into Windows. To work around this, you can reinstall Jabber with the following settings. The CLEAR=1 erases any existing Jabber Bootstrap Properties file.

msiexec.exe /i CiscoJabberSetup.msi CLEAR=1 UPN_DISCOVERY_ENABLED=false EXCLUDED_SERVICES=WEBEX

As an alternative, you can also update the C:ProgramDataCisco SystemsCisco Jabberjabber-bootstrap.properties file and simply modify any line (or line 30 as the Installer does) from “NOT_SPECIFIED” to “upnDiscoveryEnabled: false”