List of usage examples for org.apache.commons.httpclient.auth MalformedChallengeException getMessage
public String getMessage()
From source file:com.cyberway.issue.crawler.fetcher.FetchHTTP.java
/** * @param method Method that got a 401./*from www.j a v a 2 s . c o m*/ * @param curi CrawlURI that got a 401. * @return Returns first wholesome authscheme found else null. */ protected AuthScheme getAuthScheme(final HttpMethod method, final CrawlURI curi) { Header[] headers = method.getResponseHeaders("WWW-Authenticate"); if (headers == null || headers.length <= 0) { logger.info("We got a 401 but no WWW-Authenticate challenge: " + curi.toString()); return null; } Map authschemes = null; try { authschemes = AuthChallengeParser.parseChallenges(headers); } catch (MalformedChallengeException e) { logger.info("Failed challenge parse: " + e.getMessage()); } if (authschemes == null || authschemes.size() <= 0) { logger.info("We got a 401 and WWW-Authenticate challenge" + " but failed parse of the header " + curi.toString()); return null; } AuthScheme result = null; // Use the first auth found. for (Iterator i = authschemes.keySet().iterator(); result == null && i.hasNext();) { String key = (String) i.next(); String challenge = (String) authschemes.get(key); if (key == null || key.length() <= 0 || challenge == null || challenge.length() <= 0) { logger.warning("Empty scheme: " + curi.toString() + ": " + headers); } AuthScheme authscheme = null; if (key.equals("basic")) { authscheme = new BasicScheme(); } else if (key.equals("digest")) { authscheme = new DigestScheme(); } else { logger.info("Unsupported scheme: " + key); continue; } try { authscheme.processChallenge(challenge); } catch (MalformedChallengeException e) { logger.info(e.getMessage() + " " + curi + " " + headers); continue; } if (authscheme.isConnectionBased()) { logger.info("Connection based " + authscheme); continue; } if (authscheme.getRealm() == null || authscheme.getRealm().length() <= 0) { logger.info("Empty realm " + authscheme + " for " + curi); continue; } result = authscheme; } return result; }
From source file:org.archive.crawler.fetcher.OptimizeFetchHTTP.java
/** * @param method Method that got a 401./* w w w. jav a 2 s .com*/ * @param curi CrawlURI that got a 401. * @return Returns first wholesome authscheme found else null. */ protected AuthScheme getAuthScheme(final HttpMethod method, final CrawlURI curi) { Header[] headers = method.getResponseHeaders("WWW-Authenticate"); if (headers == null || headers.length <= 0) { logger.info("We got a 401 but no WWW-Authenticate challenge: " + curi.toString()); return null; } Map authschemes = null; try { authschemes = AuthChallengeParser.parseChallenges(headers); } catch (MalformedChallengeException e) { logger.info("Failed challenge parse: " + e.getMessage()); } if (authschemes == null || authschemes.size() <= 0) { logger.info("We got a 401 and WWW-Authenticate challenge" + " but failed parse of the header " + curi.toString()); return null; } AuthScheme result = null; // Use the first auth found. for (Iterator i = authschemes.keySet().iterator(); result == null && i.hasNext();) { String key = (String) i.next(); String challenge = (String) authschemes.get(key); if (key == null || key.length() <= 0 || challenge == null || challenge.length() <= 0) { logger.warn("Empty scheme: " + curi.toString() + ": " + headers); } AuthScheme authscheme = null; if (key.equals("basic")) { authscheme = new BasicScheme(); } else if (key.equals("digest")) { authscheme = new DigestScheme(); } else { logger.info("Unsupported scheme: " + key); continue; } try { authscheme.processChallenge(challenge); } catch (MalformedChallengeException e) { logger.info(e.getMessage() + " " + curi + " " + headers); continue; } if (authscheme.isConnectionBased()) { logger.info("Connection based " + authscheme); continue; } if (authscheme.getRealm() == null || authscheme.getRealm().length() <= 0) { logger.info("Empty realm " + authscheme + " for " + curi); continue; } result = authscheme; } return result; }
From source file:org.archive.modules.credential.HttpAuthenticationCredential.java
@Override public boolean populate(CrawlURI curi, HttpClient http, HttpMethod method, Map<String, String> httpAuthChallenges) { boolean result = false; AuthChallengeProcessor authChallengeProcessor = new AuthChallengeProcessor(http.getParams()); try {//from w w w . j a va 2s . com AuthScheme authScheme = authChallengeProcessor.processChallenge(method.getHostAuthState(), httpAuthChallenges); method.getHostAuthState().setAuthScheme(authScheme); } catch (MalformedChallengeException e) { return result; } catch (AuthenticationException e) { return result; } // Always add the credential to HttpState. Doing this because no way of // removing the credential once added AND there is a bug in the // credentials management system in that it always sets URI root to // null: it means the key used to find a credential is NOT realm + root // URI but just the realm. Unless I set it everytime, there is // possibility that as this thread progresses, it might come across a // realm already loaded but the login and password are from another // server. We'll get a failed authentication that'd be difficult to // explain. // // Have to make a UsernamePasswordCredentials. The httpclient auth code // does an instanceof down in its guts. UsernamePasswordCredentials upc = null; try { upc = new UsernamePasswordCredentials(getLogin(), getPassword()); http.getState().setCredentials( new AuthScope(curi.getUURI().getHost(), curi.getUURI().getPort(), getRealm()), upc); logger.fine("Credentials for realm " + getRealm() + " for CrawlURI " + curi.toString() + " added to request: " + result); http.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, Arrays.asList(AuthPolicy.DIGEST, AuthPolicy.BASIC)); result = true; } catch (URIException e) { logger.severe("Failed to parse host from " + curi + ": " + e.getMessage()); } return result; }