Search code examples
marklogicgradlewmarklogic-dhf

Gradle and proxy : Negotiate authentication error :Invalid name provided ( Mechanism level: KrbException : cannot locate default realm )


I have a problem getting gradle to get out to the internet from behind a proxy while trying to perform a MarkLogic data hub upgrade.

I execute the following code as a root level user :

./gradlew hubUpgrade -i

which gives output :

Configure project :
Evaluating root project ‘data-hub’ using build file ‘/data-hub/build.gradle’.
NEGOTIATE authentication error: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
Resource missing. [HTTP HEAD: http://developer.marklogic.com/maven2/gradle/plugin/com/marklogic/ml-data-hub/4.3.2/ml-data-hub-4.3.2.pom]
NEGOTIATE authentication error: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
NEGOTIATE authentication error: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
Failed to get resource: HEAD. [HTTP HTTP/1.1 403 Forbidden: http://developer.marklogic.com/maven2/gradle/plugin/com/marklogic/ml-data-hub/4.3.2/ml-data-hub-4.3.2.jar]
Resource missing. [HTTP HEAD: http://developer.marklogic.com/maven2/gradle/plugin/com/marklogic/ml-data-hub/4.3.2/ml-data-hub-4.3.2.pom]
NEGOTIATE authentication error: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
Failed to get resource: HEAD. [HTTP HTTP/1.1 403 Forbidden: http://developer.marklogic.com/maven2/gradle/plugin/com/marklogic/ml-data-hub/4.3.2/ml-data-hub-4.3.2.jar]

FAILURE: Build failed with an exception.

What went wrong:
org/gradle/api/internal/CollectionCallbackActionDecorator
org.gradle.api.internal.CollectionCallbackActionDecorator

What I’ve done so far:

Running on Redhat 7.6 linux , installed gradle 4.10 and tested it works OK Set up gradle as per install instructions. Set up proxy settings in gradle.properties - see below :

systemProp.http.proxyHost=< full qualified web proxy address >
systemProp.http.proxyPort=< port >
systemProp.http.proxyUser= <windows_domain>/<windows_username>
systemProp.http.proxyPassword= < pw >
systemProp.http.nonProxyHosts=localhost

systemProp.https.proxyHost=< full qualified web proxy address >
systemProp.https.proxyPort=< port >
systemProp.https.proxyUser=<windows_domain>/<windows_username>
systemProp.https.proxyPassword=< pw >
systemProp.https.nonProxyHosts=localhost

I’ve also tried from the command line using -D parameters but no joy.

Ive been able to run up firefox and connect to the internet from within the same linux user session, put in my user name and password and can get out to the internet fine.

We are using an older version of Gradle ( 4.10 ) as that is what is currently on our production systems and am not sure of its safe to use a higher version of Gradle for the upgrade or whether a higher Gradle version will fix the issue.

I’ve tried different combinations of usernames etc and / and \ and quotes etc but no job.

Any assistance much appreciated....


Solution

  • This is unlikely to be a MarkLogic or Gradle issue, more likely Kerberos cannot resolve your Proxy host to a valid address in the /etc/krb5.conf configuration files. You will need to check that your Kerberos configuration is set up to serve domains based on the Proxy server address.

    [domain_realm]
    .marklogic.local = MARKLOGIC.LOCAL
    ad.marklogic.local = MARKLOGIC.LOCAL
    .localdomain = MWCA.LOCALDOMAIN