Skip to content

Commit 7018fac

Browse files
committed
Add support for Kerberos to NTLM fallback
1 parent ae95d47 commit 7018fac

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProvider.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ public void messageReceived(final ChannelHandlerContext ctx, MessageEvent e) thr
10771077
newRealm = ntlmChallenge(wwwAuth, request, proxyServer, headers, realm, future);
10781078
// SPNEGO KERBEROS
10791079
} else if (wwwAuth.contains("Negotiate")) {
1080-
newRealm = kerberosChallenge(request, proxyServer, headers, realm, future);
1080+
newRealm = kerberosChallenge(wwwAuth, request, proxyServer, headers, realm, future );
10811081
if (newRealm == null) return;
10821082
} else {
10831083
Realm.RealmBuilder realmBuilder;
@@ -1133,7 +1133,7 @@ public Object call() throws Exception {
11331133
newRealm = ntlmChallenge(proxyAuth, request, proxyServer, headers, realm, future);
11341134
// SPNEGO KERBEROS
11351135
} else if (proxyAuth.contains("Negotiate")) {
1136-
newRealm = kerberosChallenge(request, proxyServer, headers, realm, future);
1136+
newRealm = kerberosChallenge(proxyAuth, request, proxyServer, headers, realm, future);
11371137
if (newRealm == null) return;
11381138
} else {
11391139
newRealm = future.getRequest().getRealm();
@@ -1274,11 +1274,12 @@ public Object call() throws Exception {
12741274
}
12751275
}
12761276

1277-
private Realm kerberosChallenge(Request request,
1277+
private Realm kerberosChallenge(List<String> proxyAuth,
1278+
Request request,
12781279
ProxyServer proxyServer,
12791280
FluentCaseInsensitiveStringsMap headers,
12801281
Realm realm,
1281-
NettyResponseFuture<?> future) {
1282+
NettyResponseFuture<?> future) throws NTLMEngineException {
12821283

12831284
URI uri = URI.create(request.getUrl());
12841285
String host = request.getVirtualHost() == null ? uri.getHost() : request.getVirtualHost();
@@ -1299,6 +1300,9 @@ private Realm kerberosChallenge(Request request,
12991300
.setScheme(Realm.AuthScheme.KERBEROS)
13001301
.build();
13011302
} catch (Throwable throwable) {
1303+
if (proxyAuth.contains("NTLM")) {
1304+
return ntlmChallenge(proxyAuth, request, proxyServer, headers, realm, future);
1305+
}
13021306
abort(future, throwable);
13031307
return null;
13041308
}

0 commit comments

Comments
 (0)