|
17 | 17 | import static io.netty.handler.codec.http.HttpResponseStatus.OK;
|
18 | 18 | import static io.netty.handler.codec.http.HttpResponseStatus.PROXY_AUTHENTICATION_REQUIRED;
|
19 | 19 | import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED;
|
20 |
| -import static org.asynchttpclient.providers.netty.util.HttpUtils.isNTLM; |
| 20 | +import static org.asynchttpclient.providers.netty.util.HttpUtils.getNTLM; |
21 | 21 | import static org.asynchttpclient.util.AsyncHttpProviderUtils.getDefaultPort;
|
22 | 22 | import io.netty.buffer.ByteBuf;
|
23 | 23 | import io.netty.channel.Channel;
|
@@ -81,8 +81,9 @@ private Realm kerberosChallenge(Channel channel, List<String> proxyAuth, Request
|
81 | 81 | .build();
|
82 | 82 |
|
83 | 83 | } catch (Throwable throwable) {
|
84 |
| - if (isNTLM(proxyAuth)) { |
85 |
| - return ntlmChallenge(proxyAuth.get(0), request, proxyServer, headers, realm, future, proxyInd); |
| 84 | + String ntlmAuthenticate = getNTLM(proxyAuth); |
| 85 | + if (ntlmAuthenticate != null) { |
| 86 | + return ntlmChallenge(ntlmAuthenticate, request, proxyServer, headers, realm, future, proxyInd); |
86 | 87 | }
|
87 | 88 | requestSender.abort(channel, future, throwable);
|
88 | 89 | return null;
|
@@ -204,9 +205,10 @@ private boolean exitAfterHandling401(//
|
204 | 205 | future.setState(NettyResponseFuture.STATE.NEW);
|
205 | 206 | Realm newRealm = null;
|
206 | 207 | boolean negociate = wwwAuthHeaders.contains("Negotiate");
|
207 |
| - if (!wwwAuthHeaders.contains("Kerberos") && (isNTLM(wwwAuthHeaders) || negociate)) { |
| 208 | + String ntlmAuthenticate = getNTLM(wwwAuthHeaders); |
| 209 | + if (!wwwAuthHeaders.contains("Kerberos") && ntlmAuthenticate != null) { |
208 | 210 | // NTLM
|
209 |
| - newRealm = ntlmChallenge(wwwAuthHeaders.get(0), request, proxyServer, request.getHeaders(), realm, future, false); |
| 211 | + newRealm = ntlmChallenge(ntlmAuthenticate, request, proxyServer, request.getHeaders(), realm, future, false); |
210 | 212 |
|
211 | 213 | // don't forget to reuse channel: NTLM authenticates a connection
|
212 | 214 | future.setReuseChannel(true);
|
@@ -290,8 +292,9 @@ private boolean exitAfterHandling407(//
|
290 | 292 | FluentCaseInsensitiveStringsMap requestHeaders = request.getHeaders();
|
291 | 293 |
|
292 | 294 | boolean negociate = proxyAuthHeaders.contains("Negotiate");
|
293 |
| - if (!proxyAuthHeaders.contains("Kerberos") && (isNTLM(proxyAuthHeaders) || negociate)) { |
294 |
| - newRealm = ntlmProxyChallenge(proxyAuthHeaders.get(0), request, proxyServer, requestHeaders, realm, future, true); |
| 295 | + String ntlmAuthenticate = getNTLM(proxyAuthHeaders); |
| 296 | + if (!proxyAuthHeaders.contains("Kerberos") && ntlmAuthenticate != null) { |
| 297 | + newRealm = ntlmProxyChallenge(ntlmAuthenticate, request, proxyServer, requestHeaders, realm, future, true); |
295 | 298 | // SPNEGO KERBEROS
|
296 | 299 | } else if (negociate) {
|
297 | 300 | newRealm = kerberosChallenge(channel, proxyAuthHeaders, request, proxyServer, requestHeaders, realm, future, true);
|
|
0 commit comments