Re: [Axis2] - Problem with authentication Negotiate

robertlazarski <[email protected]> Wed, 7 Feb 2024 05:29:00 -1000
Newsgroups gmane.text.xml.axis.user
Message-ID <CABpPLBWqFzjr8KqDG1Gm_deHGV=nDUSA8a-WLs1d2OpJ8FMryg@mail.gmail.com>
--00000000000052a0a70610cc5be9
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

It might take me a few days to look at this but I can probably help.

I'm about to make commits that upgrade Axis2 from httpclient 4.x to 5.x for
the next release and this feature will need to be fixed for that too.

On Wed, Feb 7, 2024 at 4:32=E2=80=AFAM Luis Silva <[email protected]=
t.invalid>
wrote:

> Hi,
>
>
>
> I=E2=80=99m having a problem upgrading one application that uses axis2 ve=
rsion
> 1.6.0 to the 1.8.2 version.
>
> The situation is that I=E2=80=99m trying to connect to one IIS webservice=
 from a
> linux server, and the IIS use in the authentication Negotiate. In version
> 1.6.0 its working using a custom class to handle the request.
>
> I try to upgrade the client part to use axis2 1.8.2 but there are changes
> on axis in HttpTransportProperties class that now doesn=E2=80=99t have
> Authenticator. I=E2=80=99m trying to use the HttpTransportPropertiesImpl =
class but
> it=E2=80=99s not working.
>
> Using HttpTransportPropertiesImpl I can=E2=80=99t use the custom class th=
at
> handles the Negotiate authentication. I=E2=80=99m going to expose the sit=
uation
> using the code.
>
>
>
> This is the code using axis2 1.6.0, and using wsdl2java to create the stu=
b
>
>
>
> *ProfilesStub stub =3D new ProfilesStub(wsURL);  // Stub created by
> wsdl2java*
>
> *System.setProperty("java.security.auth.login.config",
> kbr5LoginConfigFile); *
>
> *System.setProperty("java.security.krb5.conf", kbr5ConfigFile);*
>
> *System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");*
>
>
>
> *System.setProperty("sun.security.krb5.debug", "true");*
>
> *System.setProperty("sun.security.jgss.debug", "true");*
>
> *System.setProperty("java.security.debug",
> "logincontext,policy,scl,gssloginconfig");*
>
>
>
> *AuthPolicy.unregisterAuthScheme("BASIC");*
>
> *AuthPolicy.unregisterAuthScheme("DIGEST");*
>
> *AuthPolicy.unregisterAuthScheme("NTLM");*
>
>
>
> *ArrayList authSchemes =3D new ArrayList();*
>
> *if ( AuthSchemeId.equals("Negotiate") )  // **=C3=9F** I=E2=80=99m using
> AuthSchemeId=3DNegotiate*
>
> *{*
>
> *      AuthPolicy.registerAuthScheme("Negotiate",
> NegotiateSchemeCustom.class);   //**=C3=9F** the custom class that handle=
s the
> Negotiate authentication*
>
> *       authSchemes.add("Negotiate");*
>
> *}*
>
> *else*
>
> *{*
>
> * if ( AuthSchemeId.equals("Kerberos") )*
>
> *  {*
>
> *        AuthPolicy.registerAuthScheme("Kerberos",
> KerberosSchemeCustom.class);*
>
> *        authSchemes.add("Kerberos");            }*
>
> *        else*
>
> *           throw new Exception("Invalid authentication scheme '" +
> (AuthSchemeId =3D=3D null ? "(null)" : AuthSchemeId) + "'");*
>
> * }*
>
>
>
> *       HttpTransportProperties.Authenticator auth =3D new
> HttpTransportProperties.Authenticator();*
>
> *        auth.setDomain(userDomain);*
>
> *        auth.setHost((new URL(wsURL)).getHost());*
>
> *        java.util.Properties properties =3D new java.util.Properties();*
>
> *        // absolute from the classpath*
>
> *        String configFileName =3D "wsURL.config";*
>
> *        try*
>
> *        {*
>
> *            properties.load(new java.io.FileInputStream(configFileName))=
;*
>
> *        }*
>
> *        catch ( Exception exception )*
>
> *        {*
>
> *            System.out.println("ERROR oppening file " + configFileName +
> "--");*
>
> *            System.out.println("EX:" + exception.getMessage() +"--");*
>
> *        }*
>
> *        String username =3D properties.getProperty("username");*
>
> *        String password =3D properties.getProperty("password");*
>
>
>
> *        auth.setUsername(username);*
>
> *        auth.setPassword(password);*
>
>
>
> *        auth.setAuthSchemes(authSchemes);*
>
>
>
> *        HttpParams params =3D DefaultHttpParams.getDefaultParams();*
>
> *        params.setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY,
> authSchemes);*
>
>
>
> *        Options options =3D stub._getServiceClient().getOptions();*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENT=
ICATE,
> auth);*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED=
,
> Boolean.FALSE);*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.REUSE_H=
TTP_CLIENT,
> "true");*
>
>
>
> *        stub._getServiceClient().setOptions(options);*
>
>
>
> *       GetUserInfo userInfo =3D GetUserInfo.Factory.newInstance(); //
> GetUserInfo class created by wsdl2java*
>
> *        userInfo.setSUserName(userName);*
>
> *        userInfo.setSDomain(domain);*
>
> *        userInfo.setSApplication(application);*
>
>
>
> *        GetUserInfoDocument getUserInfoDocument =3D
> GetUserInfoDocument.Factory.newInstance();// GetUserInfoDocument class
> created by wsdl2java*
>
>
>
> *       getUserInfoDocument.setGetUserInfo(userInfo); *
>
>
>
> *        GetUserInfoResponseDocument response =3D
> stub.getUserInfo(getUserInfoDocument); // getUserInfo method to invoke,
> GetUserInfoResponseDocument class created by wsdl2java*
>
> *        String userData =3D
> response.getGetUserInfoResponse().getGetUserInfoResult().toString();*
>
>
>
> And using trace on the NegotiateSchemeCustom.class I confirm that this
> class is used
>
> In the class
>
> *public NegotiateSchemeCustom () {*
>
> *        super();*
>
> *        state =3D UNINITIATED;*
>
> *        System.out.println("Created NegotiateSchemeCustom()");*
>
> *    }*
>
>
>
> The output
>
> Jan 31, 2024 5:09:09 PM
> org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthSchem=
e
>
> INFO: negotiate authentication scheme selected
>
> Created NegotiateSchemeCustom()
>
>
>
> And the invocation is successful.
>
>
>
> But when I try using 1.8.2 version
>
>
>
> *ProfilesStub stub =3D new ProfilesStub(wsURL);  // Stub created by
> wsdl2java version 1.8.2*
>
> *System.setProperty("java.security.auth.login.config",
> kbr5LoginConfigFile); *
>
> *System.setProperty("java.security.krb5.conf", kbr5ConfigFile);*
>
> *System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");*
>
>
>
> *System.setProperty("sun.security.krb5.debug", "true");*
>
> *System.setProperty("sun.security.jgss.debug", "true");*
>
> *System.setProperty("java.security.debug",
> "logincontext,policy,scl,gssloginconfig");*
>
>
>
> *AuthPolicy.unregisterAuthScheme("BASIC");*
>
> *AuthPolicy.unregisterAuthScheme("DIGEST");*
>
> *AuthPolicy.unregisterAuthScheme("NTLM");*
>
>
>
> *ArrayList authSchemes =3D new ArrayList();*
>
> *if ( AuthSchemeId.equals("Negotiate") )  // **=C3=9F** I=E2=80=99m using
> AuthSchemeId=3DNegotiate*
>
> *{*
>
> *      AuthPolicy.registerAuthScheme("Negotiate",
> NegotiateSchemeCustom.class);   //**=C3=9F** the custom class that handle=
s the
> Negotiate authentication, same as the 1.6.0*
>
> *       authSchemes.add("Negotiate");*
>
> *}*
>
> *else*
>
> *{*
>
> * if ( AuthSchemeId.equals("Kerberos") )*
>
> *  {*
>
> *        AuthPolicy.registerAuthScheme("Kerberos",
> KerberosSchemeCustom.class);*
>
> *        authSchemes.add("Kerberos");            }*
>
> *        else*
>
> *           throw new Exception("Invalid authentication scheme '" +
> (AuthSchemeId =3D=3D null ? "(null)" : AuthSchemeId) + "'");*
>
> * }*
>
>
>
> *       HttpTransportPropertiesImpl.Authenticator auth =3D new
> HttpTransportPropertiesImpl.Authenticator(); // **=C3=9F** Using
> HttpTransportPropertiesImpl that has Authenticator*
>
> *        auth.setDomain(userDomain);*
>
> *        auth.setHost((new URL(wsURL)).getHost());*
>
> *        java.util.Properties properties =3D new java.util.Properties();*
>
> *        // absolute from the classpath*
>
> *        String configFileName =3D "wsURL.config";*
>
> *        try*
>
> *        {*
>
> *            properties.load(new java.io.FileInputStream(configFileName))=
;*
>
> *        }*
>
> *        catch ( Exception exception )*
>
> *        {*
>
> *            System.out.println("ERROR oppening file " + configFileName +
> "--");*
>
> *            System.out.println("EX:" + exception.getMessage() +"--");*
>
> *        }*
>
> *        String username =3D properties.getProperty("username");*
>
> *        String password =3D properties.getProperty("password");*
>
>
>
> *        auth.setUsername(username);*
>
> *        auth.setPassword(password);*
>
>
>
> *        auth.setAuthSchemes(authSchemes);*
>
>
>
> *        HttpParams params =3D DefaultHttpParams.getDefaultParams();*
>
> *        params.setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY,
> authSchemes);*
>
>
>
> *        Options options =3D stub._getServiceClient().getOptions();*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENT=
ICATE,
> auth);*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED=
,
> Boolean.FALSE);*
>
> *
> options.setProperty(org.apache.axis2.transport.http.HTTPConstants.REUSE_H=
TTP_CLIENT,
> "true");*
>
>
>
> *        stub._getServiceClient().setOptions(options);*
>
>
>
> *       GetUserInfo userInfo =3D GetUserInfo.Factory.newInstance(); //
> GetUserInfo class created by wsdl2java*
>
> *        userInfo.setSUserName(userName);*
>
> *        userInfo.setSDomain(domain);*
>
> *        userInfo.setSApplication(application);*
>
>
>
> *        GetUserInfoDocument getUserInfoDocument =3D
> GetUserInfoDocument.Factory.newInstance();// GetUserInfoDocument class
> created by wsdl2java*
>
>
>
> *       getUserInfoDocument.setGetUserInfo(userInfo); *
>
>
>
> *        GetUserInfoResponseDocument response =3D
> stub.getUserInfo(getUserInfoDocument); // getUserInfo method to invoke,
> GetUserInfoResponseDocument class created by wsdl2java*
>
> *        String userData =3D
> response.getGetUserInfoResponse().getGetUserInfoResult().toString();*
>
>
>
> My problems started, first is with HttpTransportPropertiesImpl, it does
> not recognizes Negotiate schema.
>
> I checked the code and when the method getAuthPolicyPref of the
> Authenticator class of the HttpTransportPropertiesImpl is called with
> Negotiate its returns null.
>
> Where is part of the code of
> axis2-1.8.2\modules\transport\http\src\org\apache\axis2\transport\http\im=
pl\httpclient4\HttpTransportPropertiesImpl.java
>
> *@Override*
>
> *        public Object getAuthPolicyPref(String scheme) {*
>
> *            if (BASIC.equals(scheme)) {*
>
> *                return AuthPolicy.BASIC;*
>
> *            } else if (NTLM.equals(scheme)) {*
>
> *                return AuthPolicy.NTLM;*
>
> *            } else if (DIGEST.equals(scheme)) {*
>
> *                return AuthPolicy.DIGEST;*
>
> *            }*
>
> *            return null;*
>
> *        }*
>
> There is no Negotiate so it returns null and in the
> AuthenticationStrategyImpl select method it causes one exception bellow,
> because id is null
>
> *for (final String id: authPrefs) {*
>
> *            final Header challenge =3D
> challenges.get(id.toLowerCase(Locale.ROOT));*
>
>
>
> My solution to this was to create a custom
> HttpTransportPropertiesImplCustom that includes Negotiate and Kerberos
>
> This is my custom class.
>
> *public class HttpTransportPropertiesImplCustom extends
> HttpTransportProperties {*
>
>
>
> *    protected HttpVersion httpVersion;*
>
>
>
> *    @Override*
>
> *    public void setHttpVersion(Object httpVerion) {*
>
> *        this.httpVersion =3D (HttpVersion) httpVerion;*
>
> *    }*
>
>
>
> *    @Override*
>
> *    public Object getHttpVersion() {*
>
> *        return this.httpVersion;*
>
> *    }*
>
>
>
> *    public static class Authenticator extends HTTPAuthenticator {*
>
>
>
> *        private int port =3D -1;*
>
> *        private String realm =3D null;*
>
>
>
> *        public static final String NTLM =3D "NTLM";*
>
> *        public static final String DIGEST =3D "Digest";*
>
> *        public static final String BASIC =3D "Basic";*
>
> *        public static final String SPNEGO =3D "Negotiate";*
>
> *        public static final String KERBEROS =3D "Kerberos";*
>
>
>
> *        public int getPort() {*
>
> *            return port;*
>
> *        }*
>
>
>
> *        public void setPort(int port) {*
>
> *            this.port =3D port;*
>
> *        }*
>
>
>
> *        public String getRealm() {*
>
> *            return realm;*
>
> *        }*
>
>
>
> *        public void setRealm(String realm) {*
>
> *            this.realm =3D realm;*
>
> *        }*
>
>
>
> *        @Override*
>
> *        public Object getAuthPolicyPref(String scheme) {*
>
> *            if (BASIC.equals(scheme)) {*
>
> *                return "Basic";*
>
> *            } else if (NTLM.equals(scheme)) {*
>
> *                return "NTLM";*
>
> *            } else if (DIGEST.equals(scheme)) {*
>
> *                return "Digest";*
>
> *            }*
>
> *            else if (SPNEGO.equals(scheme)) {*
>
> *                return "Negotiate";*
>
> *            }*
>
> *            else if (KERBEROS.equals(scheme)) {*
>
> *                return "Kerberos";*
>
> *            }*
>
> *            return null;*
>
> *        }*
>
> *    }*
>
>
>
> *}*
>
>
>
> With this now I have a valid schema for Negotiate but still can=E2=80=99t=
 invoke
> my custom class. Debugging I see that the class used when the schema is
> Negotiate is SPNegoScheme of the package org.apache.http.impl.auth. It
> ignores my NegotiateSchemeCustom.class
>
> I also tried to create a custom SPNegoScheme with the code of
> NegotiateSchemeCustom.class but have other problems.
>
> But instead of trying to use this solution why my custom class
>  NegotiateSchemeCustom.class isn=E2=80=99t used as the schema for Negotia=
te?
>
> I=E2=80=99m I missing some new configuration?
>
>
>
> Any help/suggestion is appreciated .
>
>
>
> Best Regards,
>
> Luis Silva
>
>
>

--00000000000052a0a70610cc5be9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>It might take me a few days to look at this but I can=
 probably help. <br></div><div><br></div><div>I&#39;m about to make commits=
 that upgrade Axis2 from httpclient 4.x to 5.x for the next release and thi=
s feature will need to be fixed for that too. </div></div><br><div class=3D=
"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Feb 7, 2024 at =
4:32=E2=80=AFAM Luis  Silva &lt;[email protected]&gt; wrote=
:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.=
8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=3D"=
msg6090071675751236050">





<div lang=3D"PT" style=3D"overflow-wrap: break-word;">
<div class=3D"m_6090071675751236050WordSection1">
<p class=3D"MsoNormal"><a name=3D"m_6090071675751236050__Hlk139287544">Hi,<=
u></u><u></u></a></p>
<p class=3D"MsoNormal"><span><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">I=E2=80=99m having a prob=
lem upgrading one application that uses axis2 version 1.6.0 to the 1.8.2 ve=
rsion.
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">The situation is that I=
=E2=80=99m trying to connect to one IIS webservice from a linux server, and=
 the IIS use in the authentication Negotiate. In version 1.6.0 its working =
using a custom
 class to handle the request.<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">I try to upgrade the clie=
nt part to use axis2 1.8.2 but there are changes on axis in HttpTransportPr=
operties class that now doesn=E2=80=99t have Authenticator. I=E2=80=99m try=
ing to use the HttpTransportPropertiesImpl
 class but it=E2=80=99s not working.<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Using HttpTransportProper=
tiesImpl I can=E2=80=99t use the custom class that handles the Negotiate au=
thentication. I=E2=80=99m going to expose the situation using the code.
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">This is the code using ax=
is2 1.6.0, and using wsdl2java to create the stub
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">=C2=A0=C2=A0<u></u><u></u=
></span></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">ProfilesStub stub =3D =
new ProfilesStub(wsURL);=C2=A0 // Stub created by wsdl2java<u></u><u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.auth.login.config&quot;, kbr5LoginConfigFile);
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.krb5.conf&quot;, kbr5ConfigFile);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;javax.security.auth.useSubjectCredsOnly&quot;, &quot;false&quot;);<u></u=
><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;sun.security.krb5.debug&quot;, &quot;true&quot;);<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;sun.security.jgss.debug&quot;, &quot;true&quot;);<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.debug&quot;, &quot;logincontext,policy,scl,gssloginconfig&=
quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;BASIC&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;DIGEST&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;NTLM&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">ArrayList authSchemes =
=3D new ArrayList();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">if ( AuthSchemeId.equa=
ls(&quot;Negotiate&quot;) )=C2=A0 //
</span></i></span><span><i><span lang=3D"EN-US" style=3D"font-family:Wingdi=
ngs">=C3=9F</span></i></span><span><i><span lang=3D"EN-US"> I=E2=80=99m usi=
ng AuthSchemeId=3DNegotiate<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">{<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 AuthPolicy.registerAuthScheme(&quot;Negotiate&quot;, NegotiateSch=
emeCustom.class);=C2=A0=C2=A0 //</span></i></span><span><i><span lang=3D"EN=
-US" style=3D"font-family:Wingdings">=C3=9F</span></i></span><span><i><span=
 lang=3D"EN-US">
 the custom class that handles the Negotiate authentication<u></u><u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 authSchemes.add(&quot;Negotiate&quot;);<u></u><u></u></span=
></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">}<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">else<u></u><u></u></sp=
an></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">{<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0if ( AuthSchemeI=
d.equals(&quot;Kerberos&quot;) )<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0 {<u></u><u></u>=
</span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0AuthPolicy.registerAuthScheme(&quot;Kerberos&quo=
t;, KerberosSchemeCustom.class);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0authSchemes.add(&quot;Kerberos&quot;);=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0else<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0throw new Exception(&quot;Inva=
lid authentication scheme &#39;&quot; + (AuthSchemeId =3D=3D null ?
</span>&quot;(null)&quot; : AuthSchemeId) + &quot;&#39;&quot;);<u></u><u></=
u></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0}<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 HttpTransportProperties.Authenticator auth =3D new HttpTran=
sportProperties.Authenticator();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setDomain(userDomain);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setHost((new URL(wsURL)).getHost());<u></u><u></=
u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 java.util.Properties properties =3D new java.util.Pro=
perties();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 // absolute from the classpath<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String configFileName =3D &quot;wsURL.config&quot;;<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 try<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 properties.load(new java.io.F=
ileInputStream(configFileName));<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 catch ( Exception exception )<u></u><u></u></span></i=
></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 System.out.println(&quot;ERRO=
R oppening file &quot; + configFileName + &quot;--&quot;);<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 System.out.println(&quot;EX:&=
quot; + exception.getMessage() +&quot;--&quot;);<u></u><u></u></span></i></=
span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String username =3D properties.getProperty(&quot;user=
name&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String password =3D properties.getProperty(&quot;pass=
word&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setUsername(username);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setPassword(password);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0auth.setAuthSchemes(authSchemes);<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 HttpParams params =3D DefaultHttpParams.getDefaultPar=
ams();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 params.setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, =
authSchemes);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 Options options =3D stub._getServiceClient().getOptio=
ns();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.AUTHENTICATE, auth);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.CHUNKED, Boolean.FALSE);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.REUSE_HTTP_CLIENT, &quot;true&quot;);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 stub._getServiceClient().setOptions(options);<u></u><=
u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =
<u></u><u></u></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0GetUserInfo userInfo =3D GetUserInfo.Factory.newInstan=
ce(); // GetUserInfo class created by wsdl2java<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSUserName(userName);<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSDomain(domain);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSApplication(application);<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0GetUserInfoDocument getUserInfoDocument =3D GetU=
serInfoDocument.Factory.newInstance();// GetUserInfoDocument class created =
by wsdl2java<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0</span>getUserInfoDocument.setGetUserInfo(userInfo);
<u></u><u></u></i></span></p>
<p class=3D"MsoNormal"><span><i><u></u>=C2=A0<u></u></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 GetUserInfoResponseDocument response =3D stub.getUser=
Info(getUserInfoDocument); // getUserInfo method to invoke, GetUserInfoResp=
onseDocument class created by wsdl2java<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String userData =3D response.getGetUserInfoResponse()=
.getGetUserInfoResult().toString();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">And using trace on the Ne=
gotiateSchemeCustom.class I confirm that this class is used<u></u><u></u></=
span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">In the class
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">public NegotiateScheme=
Custom () {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 super();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 state =3D UNINITIATED;<u></u><u></u></span></i></span=
></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 System.out.println(&quot;Created NegotiateSchemeCusto=
m()&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 }<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">The output<u></u><u></u><=
/span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Jan 31, 2024 5:09:09 PM o=
rg.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme<u=
></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">INFO: negotiate authentic=
ation scheme selected<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Created NegotiateSchemeCu=
stom()<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">And the invocation is suc=
cessful.<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">But when I try using 1.8.=
2 version<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">ProfilesStub stub =3D =
new ProfilesStub(wsURL);=C2=A0 // Stub created by wsdl2java version 1.8.2<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.auth.login.config&quot;, kbr5LoginConfigFile);
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.krb5.conf&quot;, kbr5ConfigFile);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;javax.security.auth.useSubjectCredsOnly&quot;, &quot;false&quot;);<u></u=
><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;sun.security.krb5.debug&quot;, &quot;true&quot;);<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;sun.security.jgss.debug&quot;, &quot;true&quot;);<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">System.setProperty(&qu=
ot;java.security.debug&quot;, &quot;logincontext,policy,scl,gssloginconfig&=
quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;BASIC&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;DIGEST&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">AuthPolicy.unregisterA=
uthScheme(&quot;NTLM&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">ArrayList authSchemes =
=3D new ArrayList();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">if ( AuthSchemeId.equa=
ls(&quot;Negotiate&quot;) )=C2=A0 //
</span></i></span><span><i><span lang=3D"EN-US" style=3D"font-family:Wingdi=
ngs">=C3=9F</span></i></span><span><i><span lang=3D"EN-US"> I=E2=80=99m usi=
ng AuthSchemeId=3DNegotiate<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">{<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 AuthPolicy.registerAuthScheme(&quot;Negotiate&quot;, NegotiateSch=
emeCustom.class);=C2=A0=C2=A0 //</span></i></span><span><i><span lang=3D"EN=
-US" style=3D"font-family:Wingdings">=C3=9F</span></i></span><span><i><span=
 lang=3D"EN-US">
 the custom class that handles the Negotiate authentication, same as the 1.=
6.0<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 authSchemes.add(&quot;Negotiate&quot;);<u></u><u></u></span=
></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">}<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">else<u></u><u></u></sp=
an></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">{<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0if ( AuthSchemeI=
d.equals(&quot;Kerberos&quot;) )<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0 {<u></u><u></u>=
</span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0AuthPolicy.registerAuthScheme(&quot;Kerberos&quo=
t;, KerberosSchemeCustom.class);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0authSchemes.add(&quot;Kerberos&quot;);=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0else<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0throw new Exception(&quot;Inva=
lid authentication scheme &#39;&quot; + (AuthSchemeId =3D=3D null ? &quot;(=
null)&quot; : AuthSchemeId) + &quot;&#39;&quot;);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0}<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 HttpTransportPropertiesImpl.Authenticator auth =3D new Http=
TransportPropertiesImpl.Authenticator(); //
</span></i></span><span><i><span lang=3D"EN-US" style=3D"font-family:Wingdi=
ngs">=C3=9F</span></i></span><span><i><span lang=3D"EN-US"> Using HttpTrans=
portPropertiesImpl that has Authenticator<u></u><u></u></span></i></span></=
p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setDomain(userDomain);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setHost((new URL(wsURL)).getHost());<u></u><u></=
u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 java.util.Properties properties =3D new java.util.Pro=
perties();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 // absolute from the classpath<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String configFileName =3D &quot;wsURL.config&quot;;<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 try<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 properties.load(new java.io.F=
ileInputStream(configFileName));<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 catch ( Exception exception )<u></u><u></u></span></i=
></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 System.out.println(&quot;ERRO=
R oppening file &quot; + configFileName + &quot;--&quot;);<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 System.out.println(&quot;EX:&=
quot; + exception.getMessage() +&quot;--&quot;);<u></u><u></u></span></i></=
span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String username =3D properties.getProperty(&quot;user=
name&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String password =3D properties.getProperty(&quot;pass=
word&quot;);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setUsername(username);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 auth.setPassword(password);<u></u><u></u></span></i><=
/span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0auth.setAuthSchemes(authSchemes);<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 HttpParams params =3D DefaultHttpParams.getDefaultPar=
ams();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 params.setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, =
authSchemes);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 Options options =3D stub._getServiceClient().getOptio=
ns();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.AUTHENTICATE, auth);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.CHUNKED, Boolean.FALSE);<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 options.setProperty(org.apache.axis2.transport.http.H=
TTPConstants.REUSE_HTTP_CLIENT, &quot;true&quot;);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 stub._getServiceClient().setOptions(options);<u></u><=
u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0GetUserInfo userInfo =3D GetUserInfo.Factory.newInstan=
ce(); // GetUserInfo class created by wsdl2java<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSUserName(userName);<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSDomain(domain);<u></u><u></u></span></i>=
</span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 userInfo.setSApplication(application);<u></u><u></u><=
/span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0GetUserInfoDocument getUserInfoDocument =3D GetU=
serInfoDocument.Factory.newInstance();// GetUserInfoDocument class created =
by wsdl2java<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0getUserInfoDocument.setGetUserInfo(userInfo);
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 GetUserInfoResponseDocument response =3D stub.getUser=
Info(getUserInfoDocument); // getUserInfo method to invoke, GetUserInfoResp=
onseDocument class created by wsdl2java<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 String userData =3D response.getGetUserInfoResponse()=
.getGetUserInfoResult().toString();<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">My problems started, firs=
t is with HttpTransportPropertiesImpl, it does not recognizes Negotiate sch=
ema.
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">I checked the code and wh=
en the method getAuthPolicyPref of the Authenticator class of the HttpTrans=
portPropertiesImpl is called with Negotiate its returns null.
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Where is part of the code=
 of axis2-1.8.2\modules\transport\http\src\org\apache\axis2\transport\http\=
impl\httpclient4\HttpTransportPropertiesImpl.java<u></u><u></u></span></spa=
n></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">@Override<u></u><u></u=
></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public Object getAuthPolicyPref(String scheme) {<u></=
u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (BASIC.equals(scheme)) {<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n AuthPolicy.BASIC;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (NTLM.equals(scheme=
)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n AuthPolicy.NTLM;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (DIGEST.equals(sche=
me)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n AuthPolicy.DIGEST;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return null;<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">There is no Negotiate so =
it returns null and in the AuthenticationStrategyImpl select method it caus=
es one exception bellow, because id is null<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">for (final String id: =
authPrefs) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 final Header challenge =3D ch=
allenges.get(id.toLowerCase(Locale.ROOT));<u></u><u></u></span></i></span><=
/p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">My solution to this was t=
o create a custom HttpTransportPropertiesImplCustom that includes Negotiate=
 and Kerberos<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">This is my custom class.<=
u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">public class HttpTrans=
portPropertiesImplCustom extends HttpTransportProperties {<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 pro=
tected HttpVersion httpVersion;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 @Ov=
erride<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 pub=
lic void setHttpVersion(Object httpVerion) {<u></u><u></u></span></i></span=
></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 this.httpVersion =3D (HttpVersion) httpVerion;<u></u>=
<u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 }<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 @Ov=
erride<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 pub=
lic Object getHttpVersion() {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 return this.httpVersion;<u></u><u></u></span></i></sp=
an></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 }<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 pub=
lic static class Authenticator extends HTTPAuthenticator {<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 private int port =3D -1;<u></u><u></u></span></i></sp=
an></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 private String realm =3D null;<u></u><u></u></span></=
i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0public static final String NTLM =3D &quot;NTLM&q=
uot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public static final String DIGEST =3D &quot;Digest&qu=
ot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public static final String BASIC =3D &quot;Basic&quot=
;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public static final String SPNEGO =3D &quot;Negotiate=
&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public static final String KERBEROS =3D &quot;Kerbero=
s&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public int getPort() {<u></u><u></u></span></i></span=
></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return port;<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public void setPort(int port) {<u></u><u></u></span><=
/i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 this.port =3D port;<u></u><u>=
</u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public String getRealm() {<u></u><u></u></span></i></=
span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return realm;<u></u><u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public void setRealm(String realm) {<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 this.realm =3D realm;<u></u><=
u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 @Override<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 public Object getAuthPolicyPref(String scheme) {<u></=
u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (BASIC.equals(scheme)) {<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n &quot;Basic&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (NTLM.equals(scheme=
)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n &quot;NTLM&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (DIGEST.equals(sche=
me)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n &quot;Digest&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else if (SPNEGO.equals(scheme=
)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n &quot;Negotiate&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else if (KERBEROS.equals(sche=
me)) {<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 retur=
n &quot;Kerberos&quot;;<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></s=
pan></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return null;<u></u><u></u></s=
pan></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">=C2=A0=C2=A0=C2=A0 }<u=
></u><u></u></span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US"><u></u>=C2=A0<u></u></=
span></i></span></p>
<p class=3D"MsoNormal"><span><i><span lang=3D"EN-US">}<u></u><u></u></span>=
</i></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">With this now I have a va=
lid schema for Negotiate but still can=E2=80=99t invoke my custom class. De=
bugging I see that the class used when the schema is Negotiate is SPNegoSch=
eme of the
 package org.apache.http.impl.auth. It ignores my NegotiateSchemeCustom.cla=
ss<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">I also tried to create a =
custom SPNegoScheme with the code of NegotiateSchemeCustom.class but have o=
ther problems.
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">But instead of trying to =
use this solution why my custom class =C2=A0NegotiateSchemeCustom.class isn=
=E2=80=99t used as the schema for Negotiate?<u></u><u></u></span></span></p=
>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">I=E2=80=99m I missing som=
e new configuration?
<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Any help/suggestion is ap=
preciated .<u></u><u></u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Best Regards,<u></u><u></=
u></span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US">Luis Silva<u></u><u></u><=
/span></span></p>
<p class=3D"MsoNormal"><span><span lang=3D"EN-US"><u></u>=C2=A0<u></u></spa=
n></span></p>
</div>
</div>

</div></blockquote></div>

--00000000000052a0a70610cc5be9--