-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major
-
Component/s: vsphere-cloud-plugin
-
None
-
Environment:Jenkins version - 2.289.3 (Windows server 2019, oracle jdk version "1.8.0_212")
vsphere-cloud-plugin plugin version - 2.25
The plugin depends on network library yavijava
https://github.com/jenkinsci/vsphere-cloud-plugin/blob/master/pom.xml#L95-L96Â
The yavijava supports two types of http clients:
CloseableHttpClient
HttpURLConnection - is default
The HttpURLConnection client's behaviour can be impacted by system-wide cookie handler CookieManager:
https://docs.oracle.com/javase/8/docs/api/java/net/CookieManager.html The major problem is that the CookieManager overlaps logic provided by [WSClient] to setup http header Cookie. Global CookieManager know nothing about logic of vsphere-cloud-plugin and fill all http headers with stored cookies, as result vsphere center rejects login requests with error:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>ServerFaultCode</faultcode>
      <faultstring>Cannot complete login due to an incorrect user name or password.</faultstring>
      <detail>
        <InvalidLoginFault xmlns="urn:vim25" xsi:type="InvalidLogin">
          <faultMessage>
            <key>vim.fault.InvalidLoginWithReason</key>
            <arg>
              <key>1</key>
              <value xsi:type="xsd:string">vim.fault.InvalidLoginReasonRegisterFailed</value>
            </arg>
            <message>Login failed because the session could not be re-registered.</message>
          </faultMessage>
        </InvalidLoginFault>
      </detail>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>
The vsphere-cloud-plugin does not use CookieManager, but there is no guarantee that other plugins avoid it. Example:
https://github.com/jenkinsci/parameterized-remote-trigger-plugin/blob/master/src/main/java/org/jenkinsci/plugins/ParameterizedRemoteTrigger/RemoteBuildConfiguration.java#L158-L159Â
As workaroud we can switch to CloseableHttpClient http client.
I have prepared draft pull request:
https://github.com/jenkinsci/vsphere-cloud-plugin/pull/133
Please also pay attention to the issue in repository yavijava: