/** * @since 5.0 */ public void resetAuthExchange(final HttpHost host, final AuthScheme authScheme) { final AuthExchange authExchange = new AuthExchange(); authExchange.select(authScheme); final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges(); authExchangeMap.put(host, authExchange); }
if (authExchange.getState() == AuthExchange.State.SUCCESS) { clearCache(host, clientContext); switch (authExchange.getState()) { case CHALLENGED: case HANDSHAKE: this.log.debug("Authentication succeeded"); authExchange.setState(AuthExchange.State.SUCCESS); updateCache(host, authExchange.getAuthScheme(), clientContext); break; case SUCCESS: break; default: authExchange.setState(AuthExchange.State.UNCHALLENGED);
@Override public void completed() { if (!execRuntime.isEndpointConnected()) { if (proxyAuthExchange.getState() == AuthExchange.State.SUCCESS && proxyAuthExchange.isConnectionBased()) { log.debug("Resetting proxy auth state"); proxyAuthExchange.reset(); if (targetAuthExchange.getState() == AuthExchange.State.SUCCESS && targetAuthExchange.isConnectionBased()) { log.debug("Resetting target auth state"); targetAuthExchange.reset();
@Override public void failed(final Exception cause) { if (cause instanceof IOException || cause instanceof RuntimeException) { if (proxyAuthExchange.isConnectionBased()) { proxyAuthExchange.reset(); } if (targetAuthExchange.isConnectionBased()) { targetAuthExchange.reset(); } } asyncExecCallback.failed(cause); }
this.log.debug("Response contains no valid authentication challenges"); clearCache(host, clientContext); authExchange.reset(); return false; switch (authExchange.getState()) { case FAILURE: return false; case SUCCESS: authExchange.reset(); break; case CHALLENGED: case HANDSHAKE: Asserts.notNull(authExchange.getAuthScheme(), "AuthScheme"); case UNCHALLENGED: final AuthScheme authScheme = authExchange.getAuthScheme(); if (authScheme != null) { final String id = authScheme.getName(); authExchange.reset(); return false; this.log.debug("Authentication failed"); clearCache(host, clientContext); authExchange.reset(); authExchange.setState(AuthExchange.State.FAILURE); return false; authExchange.setState(AuthExchange.State.HANDSHAKE);
final AuthExchange authExchange, final HttpContext context) { AuthScheme authScheme = authExchange.getAuthScheme(); switch (authExchange.getState()) { case FAILURE: return; break; case CHALLENGED: final Queue<AuthScheme> authOptions = authExchange.getAuthOptions(); if (authOptions != null) { while (!authOptions.isEmpty()) { authScheme = authOptions.remove(); authExchange.select(authScheme); if (this.log.isDebugEnabled()) { this.log.debug("Generating response to an authentication challenge using "
final HttpHost proxy = route.getProxyHost(); final AuthExchange targetAuthExchange = context.getAuthExchange(target); final AuthExchange proxyAuthExchange = proxy != null ? context.getAuthExchange(proxy) : new AuthExchange(); log.debug("Target auth state: " + targetAuthExchange.getState()); log.debug("Proxy auth state: " + proxyAuthExchange.getState()); } else { execRuntime.disconnectEndpoint(); if (proxyAuthExchange.getState() == AuthExchange.State.SUCCESS && proxyAuthExchange.isConnectionBased()) { log.debug("Resetting proxy auth state"); proxyAuthExchange.reset(); if (targetAuthExchange.getState() == AuthExchange.State.SUCCESS && targetAuthExchange.isConnectionBased()) { log.debug("Resetting target auth state"); targetAuthExchange.reset(); } catch (final RuntimeException | IOException ex) { execRuntime.discardEndpoint(); if (proxyAuthExchange.isConnectionBased()) { proxyAuthExchange.reset(); if (targetAuthExchange.isConnectionBased()) { targetAuthExchange.reset();
if (targetAuthExchange.getState() == AuthExchange.State.UNCHALLENGED) { final AuthScheme authScheme = authCache.get(target); if (authScheme != null) { this.log.debug("Re-using cached '" + authScheme.getName() + "' auth scheme for " + target); targetAuthExchange.select(authScheme); if (proxy != null) { final AuthExchange proxyAuthExchange = clientContext.getAuthExchange(proxy); if (proxyAuthExchange.getState() == AuthExchange.State.UNCHALLENGED) { final AuthScheme authScheme = authCache.get(proxy); if (authScheme != null) { this.log.debug("Re-using cached '" + authScheme.getName() + "' auth scheme for " + proxy); proxyAuthExchange.select(authScheme);
final AuthExchange proxyAuthExchange = proxy != null ? clientContext.getAuthExchange(proxy) : new AuthExchange(); log.debug("Target auth state: " + targetAuthExchange.getState()); log.debug("Proxy auth state: " + proxyAuthExchange.getState());
/** * @since 5.0 */ public AuthExchange getAuthExchange(final HttpHost host) { final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges(); AuthExchange authExchange = authExchangeMap.get(host); if (authExchange == null) { authExchange = new AuthExchange(); authExchangeMap.put(host, authExchange); } return authExchange; }
private static Principal getAuthPrincipal(final AuthExchange authExchange) { final AuthScheme scheme = authExchange.getAuthScheme(); if (scheme != null && scheme.isConnectionBased()) { return scheme.getPrincipal(); } return null; }
final AuthExchange targetAuthExchange = clientContext.getAuthExchange(currentRoute.getTargetHost()); log.debug("Resetting target auth state"); targetAuthExchange.reset(); if (currentRoute.getProxyHost() != null) { final AuthExchange proxyAuthExchange = clientContext.getAuthExchange(currentRoute.getProxyHost()); if (proxyAuthExchange.isConnectionBased()) { log.debug("Resetting proxy auth state"); proxyAuthExchange.reset();
final HttpClientContext clientContext = scope.clientContext; final AuthExchange proxyAuthExchange = proxy != null ? clientContext.getAuthExchange(proxy) : new AuthExchange();
final AuthExchange targetAuthExchange = context.getAuthExchange(currentRoute.getTargetHost()); this.log.debug("Resetting target auth state"); targetAuthExchange.reset(); if (currentRoute.getProxyHost() != null) { final AuthExchange proxyAuthExchange = context.getAuthExchange(currentRoute.getProxyHost()); if (proxyAuthExchange.isConnectionBased()) { this.log.debug("Resetting proxy auth state"); proxyAuthExchange.reset();
/** * @since 5.0 */ public ProxyClient( final HttpConnectionFactory<ManagedHttpClientConnection> connFactory, final H1Config h1Config, final CharCodingConfig charCodingConfig, final RequestConfig requestConfig) { super(); this.connFactory = connFactory != null ? connFactory : new ManagedHttpClientConnectionFactory(h1Config, charCodingConfig, null, null); this.requestConfig = requestConfig != null ? requestConfig : RequestConfig.DEFAULT; this.httpProcessor = new DefaultHttpProcessor( new RequestTargetHost(), new RequestClientConnControl(), new RequestUserAgent()); this.requestExec = new HttpRequestExecutor(); this.proxyAuthStrategy = new DefaultAuthenticationStrategy(); this.authenticator = new HttpAuthenticator(); this.proxyAuthExchange = new AuthExchange(); this.authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create() .register(AuthSchemes.BASIC.ident, new BasicSchemeFactory()) .register(AuthSchemes.DIGEST.ident, new DigestSchemeFactory()) .register(AuthSchemes.NTLM.ident, new NTLMSchemeFactory()) .register(AuthSchemes.SPNEGO.ident, new SPNegoSchemeFactory(KerberosConfig.DEFAULT, SystemDefaultDnsResolver.INSTANCE)) .register(AuthSchemes.KERBEROS.ident, new KerberosSchemeFactory(KerberosConfig.DEFAULT, SystemDefaultDnsResolver.INSTANCE)) .build(); this.reuseStrategy = new DefaultConnectionReuseStrategy(); }