You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2014/03/31 16:04:34 UTC
svn commit: r1583331 - in /httpcomponents/httpclient/trunk: ./
httpclient-win/src/main/java/org/apache/http/impl/auth/win/
Author: olegk
Date: Mon Mar 31 14:04:34 2014
New Revision: 1583331
URL: http://svn.apache.org/r1583331
Log:
HTTPCLIENT-1491: Enable provision of Service Principal Name in Windows native auth scheme
Contributed by Malcolm Smith <malcolmfsmith at gmail.com>
Modified:
httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNTLMSchemeFactory.java
httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateScheme.java
httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateSchemeFactory.java
Modified: httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt?rev=1583331&r1=1583330&r2=1583331&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpclient/trunk/RELEASE_NOTES.txt Mon Mar 31 14:04:34 2014
@@ -4,6 +4,10 @@ Changes for 4.4-alpha1
Changelog:
-------------------
+* [HTTPCLIENT-1491] Enable provision of Service Principal Name in Windows native
+ auth scheme.
+ Contributed by Malcolm Smith <malcolmfsmith at gmail.com>
+
* [HTTPCLIENT-1484] GzipCompressingEntity should not close the underlying output stream
if the entity has not been fully written out due to an exception.
Contributed by Oleg Kalnichevski <olegk at apache.org>
Modified: httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNTLMSchemeFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNTLMSchemeFactory.java?rev=1583331&r1=1583330&r2=1583331&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNTLMSchemeFactory.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNTLMSchemeFactory.java Mon Mar 31 14:04:34 2014
@@ -44,9 +44,16 @@ import org.apache.http.protocol.HttpCont
@Immutable
public class WindowsNTLMSchemeFactory implements AuthSchemeProvider {
+ private String servicePrincipalName;
+
+ public WindowsNTLMSchemeFactory(final String servicePrincipalName) {
+ super();
+ this.servicePrincipalName = servicePrincipalName;
+ }
+
@Override
public AuthScheme create(final HttpContext context) {
- return new WindowsNegotiateScheme(AuthSchemes.NTLM);
+ return new WindowsNegotiateScheme(AuthSchemes.NTLM, servicePrincipalName);
}
}
Modified: httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateScheme.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateScheme.java?rev=1583331&r1=1583330&r2=1583331&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateScheme.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateScheme.java Mon Mar 31 14:04:34 2014
@@ -85,13 +85,15 @@ public class WindowsNegotiateScheme exte
private CtxtHandle sppicontext;
private boolean continueNeeded;
private String challenge;
+ private String servicePrincipalName;
- public WindowsNegotiateScheme(final String scheme) {
+ public WindowsNegotiateScheme(final String scheme, final String servicePrincipalName) {
super();
this.scheme = (scheme == null) ? AuthSchemes.SPNEGO : scheme;
this.challenge = null;
this.continueNeeded = true;
+ this.servicePrincipalName = servicePrincipalName;
}
public void dispose() {
@@ -187,7 +189,8 @@ public class WindowsNegotiateScheme exte
throw new Win32Exception(rc);
}
- response = getToken(null, null, username);
+ response = getToken(null, null,
+ this.servicePrincipalName != null ? this.servicePrincipalName : username);
} catch (Throwable t) {
dispose();
throw new AuthenticationException("Authentication Failed", t);
@@ -200,7 +203,8 @@ public class WindowsNegotiateScheme exte
final byte[] continueTokenBytes = Base64.decodeBase64(this.challenge);
final SecBufferDesc continueTokenBuffer = new SecBufferDesc(
Sspi.SECBUFFER_TOKEN, continueTokenBytes);
- response = getToken(this.sppicontext, continueTokenBuffer, "localhost");
+ response = getToken(this.sppicontext, continueTokenBuffer,
+ this.servicePrincipalName != null ? this.servicePrincipalName : "localhost");
} catch (Throwable t) {
dispose();
throw new AuthenticationException("Authentication Failed", t);
Modified: httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateSchemeFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateSchemeFactory.java?rev=1583331&r1=1583330&r2=1583331&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateSchemeFactory.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-win/src/main/java/org/apache/http/impl/auth/win/WindowsNegotiateSchemeFactory.java Mon Mar 31 14:04:34 2014
@@ -44,9 +44,16 @@ import org.apache.http.protocol.HttpCont
@Immutable
public class WindowsNegotiateSchemeFactory implements AuthSchemeProvider {
+ private String servicePrincipalName;
+
+ public WindowsNegotiateSchemeFactory(final String servicePrincipalName) {
+ super();
+ this.servicePrincipalName = servicePrincipalName;
+ }
+
@Override
public AuthScheme create(final HttpContext context) {
- return new WindowsNegotiateScheme(AuthSchemes.SPNEGO);
+ return new WindowsNegotiateScheme(AuthSchemes.SPNEGO, servicePrincipalName);
}
}