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 2011/09/25 17:49:27 UTC
svn commit: r1175415 - in /httpcomponents/httpclient/trunk/httpclient/src:
examples/org/apache/http/examples/client/ main/java/org/apache/http/auth/
main/java/org/apache/http/client/protocol/
main/java/org/apache/http/impl/client/ test/java/org/apache/...
Author: olegk
Date: Sun Sep 25 15:49:27 2011
New Revision: 1175415
URL: http://svn.apache.org/viewvc?rev=1175415&view=rev
Log:
HTTPCLIENT-1107: better tracking of auth challenge state transitions
Added:
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java (with props)
Modified:
httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientInteractiveAuthentication.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthState.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/ResponseAuthCache.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpAuthenticator.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestProxyAuthentication.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestTargetAuthentication.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseAuthCache.java
Modified: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientInteractiveAuthentication.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientInteractiveAuthentication.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientInteractiveAuthentication.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientInteractiveAuthentication.java Sun Sep 25 15:49:27 2011
@@ -29,8 +29,10 @@ import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
+import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.AuthState;
import org.apache.http.auth.Credentials;
@@ -39,6 +41,7 @@ import org.apache.http.client.methods.Ht
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
@@ -71,22 +74,23 @@ public class ClientInteractiveAuthentica
int sc = response.getStatusLine().getStatusCode();
AuthState authState = null;
+ HttpHost authhost = null;
if (sc == HttpStatus.SC_UNAUTHORIZED) {
// Target host authentication required
authState = (AuthState) localContext.getAttribute(ClientContext.TARGET_AUTH_STATE);
+ authhost = (HttpHost) localContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
}
if (sc == HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED) {
// Proxy authentication required
authState = (AuthState) localContext.getAttribute(ClientContext.PROXY_AUTH_STATE);
+ authhost = (HttpHost) localContext.getAttribute(ExecutionContext.HTTP_PROXY_HOST);
}
if (authState != null) {
System.out.println("----------------------------------------");
- AuthScope authScope = authState.getAuthScope();
- System.out.println("Please provide credentials");
- System.out.println(" Host: " + authScope.getHost() + ":" + authScope.getPort());
- System.out.println(" Realm: " + authScope.getRealm());
-
+ AuthScheme authscheme = authState.getAuthScheme();
+ System.out.println("Please provide credentials for " +
+ authscheme.getRealm() + "@" + authhost.toHostString());
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
@@ -97,7 +101,7 @@ public class ClientInteractiveAuthentica
if (user != null && user.length() > 0) {
Credentials creds = new UsernamePasswordCredentials(user, password);
- httpclient.getCredentialsProvider().setCredentials(authScope, creds);
+ httpclient.getCredentialsProvider().setCredentials(new AuthScope(authhost), creds);
trying = true;
} else {
trying = false;
Added: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java?rev=1175415&view=auto
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java (added)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java Sun Sep 25 15:49:27 2011
@@ -0,0 +1,33 @@
+/*
+ * ====================================================================
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.auth;
+
+public enum AuthChallengeState {
+
+ UNCHALLENGED, CHALLENGED, FAILURE, SUCCESS
+
+}
Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthChallengeState.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthState.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthState.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthState.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/auth/AuthState.java Sun Sep 25 15:49:27 2011
@@ -30,15 +30,16 @@ import org.apache.http.annotation.NotThr
/**
- * This class provides detailed information about the state of the
- * authentication process.
- *
+ * This class provides detailed information about the state of the authentication process.
*
* @since 4.0
*/
@NotThreadSafe
public class AuthState {
+ /** Actual state of authentication process */
+ private AuthChallengeState challengeState;
+
/** Actual authentication scheme */
private AuthScheme authScheme;
@@ -54,12 +55,14 @@ public class AuthState {
*/
public AuthState() {
super();
+ this.challengeState = AuthChallengeState.UNCHALLENGED;
}
/**
* Invalidates the authentication state by resetting its parameters.
*/
public void invalidate() {
+ this.challengeState = AuthChallengeState.UNCHALLENGED;
this.authScheme = null;
this.authScope = null;
this.credentials = null;
@@ -92,6 +95,19 @@ public class AuthState {
return this.authScheme;
}
+ /**
+ * @since 4.2
+ */
+ public AuthChallengeState getChallengeState() {
+ return this.challengeState;
+ }
+
+ /**
+ * @since 4.2
+ */
+ public void setChallengeState(final AuthChallengeState state) {
+ this.challengeState = state != null ? state : AuthChallengeState.UNCHALLENGED;
+ }
/**
* Returns user {@link Credentials} selected for authentication if available
@@ -102,7 +118,6 @@ public class AuthState {
return this.credentials;
}
-
/**
* Sets user {@link Credentials} to be used for authentication
*
@@ -112,34 +127,40 @@ public class AuthState {
this.credentials = credentials;
}
-
/**
* Returns actual {@link AuthScope} if available
*
* @return actual authentication scope if available, <code>null</code otherwise
+ *
+ * @deprecated use {@link #isChallenged()}
*/
- public AuthScope getAuthScope() {
+ @Deprecated
+ public AuthScope getAuthScope() {
return this.authScope;
- }
+ }
- /**
- * Sets actual {@link AuthScope}.
- *
- * @param authScope Authentication scope
- */
- public void setAuthScope(final AuthScope authScope) {
+ /**
+ * Sets actual {@link AuthScope}.
+ *
+ * @param authScope Authentication scope
+ *
+ * @deprecated use {@link #setChallenged()} or {@link #setUnchallenged()}.
+ */
+ @Deprecated
+ public void setAuthScope(final AuthScope authScope) {
this.authScope = authScope;
- }
-
+ }
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
- buffer.append("auth scope [");
- buffer.append(this.authScope);
- buffer.append("]; credentials set [");
- buffer.append(this.credentials != null ? "true" : "false");
- buffer.append("]");
+ buffer.append("state:").append(this.challengeState).append(";");
+ if (this.authScheme != null) {
+ buffer.append("auth scheme:").append(this.authScheme.getSchemeName()).append(";");
+ }
+ if (this.credentials != null) {
+ buffer.append("credentials present");
+ }
return buffer.toString();
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/ResponseAuthCache.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/ResponseAuthCache.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/ResponseAuthCache.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/ResponseAuthCache.java Sun Sep 25 15:49:27 2011
@@ -88,7 +88,13 @@ public class ResponseAuthCache implement
authCache = new BasicAuthCache();
context.setAttribute(ClientContext.AUTH_CACHE, authCache);
}
- cache(authCache, target, targetState);
+ switch (targetState.getChallengeState()) {
+ case CHALLENGED:
+ cache(authCache, target, targetState.getAuthScheme());
+ break;
+ case FAILURE:
+ uncache(authCache, target, targetState.getAuthScheme());
+ }
}
}
@@ -100,7 +106,13 @@ public class ResponseAuthCache implement
authCache = new BasicAuthCache();
context.setAttribute(ClientContext.AUTH_CACHE, authCache);
}
- cache(authCache, proxy, proxyState);
+ switch (proxyState.getChallengeState()) {
+ case CHALLENGED:
+ cache(authCache, proxy, proxyState.getAuthScheme());
+ break;
+ case FAILURE:
+ uncache(authCache, proxy, proxyState.getAuthScheme());
+ }
}
}
}
@@ -115,19 +127,19 @@ public class ResponseAuthCache implement
schemeName.equalsIgnoreCase(AuthPolicy.DIGEST);
}
- private void cache(final AuthCache authCache, final HttpHost host, final AuthState authState) {
- AuthScheme authScheme = authState.getAuthScheme();
- if (authState.getAuthScope() != null) {
- if (authState.getCredentials() != null) {
- if (this.log.isDebugEnabled()) {
- this.log.debug("Caching '" + authScheme.getSchemeName() +
- "' auth scheme for " + host);
- }
- authCache.put(host, authScheme);
- } else {
- authCache.remove(host);
- }
+ private void cache(final AuthCache authCache, final HttpHost host, final AuthScheme authScheme) {
+ if (this.log.isDebugEnabled()) {
+ this.log.debug("Caching '" + authScheme.getSchemeName() +
+ "' auth scheme for " + host);
}
+ authCache.put(host, authScheme);
}
+ private void uncache(final AuthCache authCache, final HttpHost host, final AuthScheme authScheme) {
+ if (this.log.isDebugEnabled()) {
+ this.log.debug("Removing from cache '" + authScheme.getSchemeName() +
+ "' auth scheme for " + host);
+ }
+ authCache.remove(host);
+ }
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java Sun Sep 25 15:49:27 2011
@@ -45,6 +45,7 @@ import org.apache.http.HttpResponse;
import org.apache.http.ProtocolException;
import org.apache.http.ProtocolVersion;
import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.auth.AuthChallengeState;
import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthState;
import org.apache.http.client.AuthenticationHandler;
@@ -845,7 +846,8 @@ public class DefaultRequestDirector impl
context.getAttribute(ClientContext.CREDS_PROVIDER);
if (credsProvider != null && HttpClientParams.isAuthenticating(this.params)) {
- if (this.proxyAuthHandler.isAuthenticationRequested(response, context)) {
+ if (this.authenticator.isAuthenticationRequested(response,
+ this.proxyAuthHandler, this.proxyAuthState, context)) {
if (this.authenticator.authenticate(
proxy, response,
this.proxyAuthHandler, this.proxyAuthState,
@@ -863,8 +865,6 @@ public class DefaultRequestDirector impl
break;
}
} else {
- // Reset target auth scope
- this.proxyAuthState.setAuthScope(null);
break;
}
}
@@ -1021,8 +1021,8 @@ public class DefaultRequestDirector impl
uri.getScheme());
// Unset auth scope
- targetAuthState.setAuthScope(null);
- proxyAuthState.setAuthScope(null);
+ targetAuthState.setChallengeState(AuthChallengeState.UNCHALLENGED);
+ proxyAuthState.setChallengeState(AuthChallengeState.UNCHALLENGED);
// Invalidate auth states if redirecting to another host
if (!route.getTargetHost().equals(newTarget)) {
@@ -1051,7 +1051,8 @@ public class DefaultRequestDirector impl
if (credsProvider != null && HttpClientParams.isAuthenticating(params)) {
- if (this.targetAuthHandler.isAuthenticationRequested(response, context)) {
+ if (this.authenticator.isAuthenticationRequested(response,
+ this.targetAuthHandler, this.targetAuthState, context)) {
HttpHost target = (HttpHost)
context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
@@ -1072,13 +1073,10 @@ public class DefaultRequestDirector impl
} else {
return null;
}
- } else {
- // Reset target auth scope
- this.targetAuthState.setAuthScope(null);
}
- if (this.proxyAuthHandler.isAuthenticationRequested(response, context)) {
-
+ if (this.authenticator.isAuthenticationRequested(response,
+ this.proxyAuthHandler, this.proxyAuthState, context)) {
HttpHost proxy = route.getProxyHost();
if (this.authenticator.authenticate(
proxy, response,
@@ -1089,9 +1087,6 @@ public class DefaultRequestDirector impl
} else {
return null;
}
- } else {
- // Reset proxy auth scope
- this.proxyAuthState.setAuthScope(null);
}
}
return null;
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpAuthenticator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpAuthenticator.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpAuthenticator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/HttpAuthenticator.java Sun Sep 25 15:49:27 2011
@@ -35,6 +35,7 @@ import org.apache.commons.logging.LogFac
import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
+import org.apache.http.auth.AuthChallengeState;
import org.apache.http.auth.AuthScheme;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.AuthState;
@@ -58,6 +59,23 @@ public class HttpAuthenticator {
this(null);
}
+ public boolean isAuthenticationRequested(
+ final HttpResponse response,
+ final AuthenticationHandler authHandler,
+ final AuthState authState,
+ final HttpContext context) {
+ if (authHandler.isAuthenticationRequested(response, context)) {
+ return true;
+ } else {
+ if (authState.getChallengeState() == AuthChallengeState.CHALLENGED) {
+ authState.setChallengeState(AuthChallengeState.SUCCESS);
+ } else {
+ authState.setChallengeState(AuthChallengeState.UNCHALLENGED);
+ }
+ return false;
+ }
+ }
+
public boolean authenticate(
final HttpHost host,
final HttpResponse response,
@@ -70,6 +88,10 @@ public class HttpAuthenticator {
this.log.debug(host.toHostString() + " requested authentication");
}
Map<String, Header> challenges = authHandler.getChallenges(response, context);
+ if (challenges.isEmpty()) {
+ this.log.debug("Response contains no authentication challenges");
+ return false;
+ }
AuthScheme authScheme = authState.getAuthScheme();
if (authScheme == null) {
// Authentication not attempted before
@@ -86,6 +108,7 @@ public class HttpAuthenticator {
id = authScheme.getSchemeName();
challenge = challenges.get(id.toLowerCase(Locale.US));
}
+ authState.setChallengeState(AuthChallengeState.CHALLENGED);
authScheme.processChallenge(challenge);
this.log.debug("Authorization challenge processed");
@@ -111,21 +134,23 @@ public class HttpAuthenticator {
} else {
if (authScheme.isComplete()) {
this.log.debug("Authentication failed");
+ authState.setChallengeState(AuthChallengeState.FAILURE);
creds = null;
}
}
- authState.setAuthScope(authScope);
authState.setCredentials(creds);
return creds != null;
} catch (MalformedChallengeException ex) {
if (this.log.isWarnEnabled()) {
this.log.warn("Malformed challenge: " + ex.getMessage());
}
+ authState.invalidate();
return false;
} catch (AuthenticationException ex) {
if (this.log.isWarnEnabled()) {
this.log.warn("Authentication error: " + ex.getMessage());
}
+ authState.invalidate();
return false;
}
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestProxyAuthentication.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestProxyAuthentication.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestProxyAuthentication.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestProxyAuthentication.java Sun Sep 25 15:49:27 2011
@@ -33,7 +33,7 @@ import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.AuthChallengeState;
import org.apache.http.auth.AuthState;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
@@ -81,13 +81,11 @@ public class TestRequestProxyAuthenticat
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
@@ -115,14 +113,12 @@ public class TestRequestProxyAuthenticat
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
@@ -150,14 +146,12 @@ public class TestRequestProxyAuthenticat
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
@@ -277,8 +271,7 @@ public class TestRequestProxyAuthenticat
authstate.setAuthScheme(authscheme);
authstate.setCredentials(creds);
- // No challenge
- authstate.setAuthScope(null);
+ authstate.setChallengeState(AuthChallengeState.UNCHALLENGED);
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
context.setAttribute(ClientContext.PROXY_AUTH_STATE, authstate);
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestTargetAuthentication.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestTargetAuthentication.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestTargetAuthentication.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestTargetAuthentication.java Sun Sep 25 15:49:27 2011
@@ -32,7 +32,7 @@ import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.AuthChallengeState;
import org.apache.http.auth.AuthState;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
@@ -66,13 +66,11 @@ public class TestRequestTargetAuthentica
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.WWW_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ClientContext.TARGET_AUTH_STATE, authstate);
@@ -91,13 +89,11 @@ public class TestRequestTargetAuthentica
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.WWW_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ClientContext.TARGET_AUTH_STATE, authstate);
@@ -116,14 +112,12 @@ public class TestRequestTargetAuthentica
BasicScheme authscheme = new BasicScheme();
Credentials creds = new UsernamePasswordCredentials("user", "secret");
- AuthScope authscope = new AuthScope("localhost", 8080, "auth-realm", "http");
BasicHeader challenge = new BasicHeader(AUTH.WWW_AUTH, "BASIC realm=auth-realm");
authscheme.processChallenge(challenge);
AuthState authstate = new AuthState();
authstate.setAuthScheme(authscheme);
- authstate.setAuthScope(authscope);
authstate.setCredentials(creds);
context.setAttribute(ClientContext.TARGET_AUTH_STATE, authstate);
@@ -207,8 +201,7 @@ public class TestRequestTargetAuthentica
authstate.setAuthScheme(authscheme);
authstate.setCredentials(creds);
- // No challenge
- authstate.setAuthScope(null);
+ authstate.setChallengeState(AuthChallengeState.UNCHALLENGED);
context.setAttribute(ClientContext.TARGET_AUTH_STATE, authstate);
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseAuthCache.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseAuthCache.java?rev=1175415&r1=1175414&r2=1175415&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseAuthCache.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseAuthCache.java Sun Sep 25 15:49:27 2011
@@ -33,10 +33,8 @@ import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpVersion;
import org.apache.http.auth.AUTH;
-import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.AuthChallengeState;
import org.apache.http.auth.AuthState;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
@@ -52,10 +50,6 @@ public class TestResponseAuthCache {
private HttpHost target;
private HttpHost proxy;
- private Credentials creds1;
- private Credentials creds2;
- private AuthScope authscope1;
- private AuthScope authscope2;
private BasicScheme authscheme1;
private BasicScheme authscheme2;
private AuthState targetState;
@@ -66,10 +60,6 @@ public class TestResponseAuthCache {
this.target = new HttpHost("localhost", 80);
this.proxy = new HttpHost("localhost", 8080);
- this.creds1 = new UsernamePasswordCredentials("user1", "secret1");
- this.creds2 = new UsernamePasswordCredentials("user2", "secret2");
- this.authscope1 = new AuthScope(this.target);
- this.authscope2 = new AuthScope(this.proxy);
this.authscheme1 = new BasicScheme();
this.authscheme2 = new BasicScheme();
@@ -100,13 +90,11 @@ public class TestResponseAuthCache {
this.authscheme2.processChallenge(
new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm"));
+ this.targetState.setChallengeState(AuthChallengeState.CHALLENGED);
this.targetState.setAuthScheme(this.authscheme1);
- this.targetState.setCredentials(this.creds1);
- this.targetState.setAuthScope(this.authscope1);
+ this.proxyState.setChallengeState(AuthChallengeState.CHALLENGED);
this.proxyState.setAuthScheme(this.authscheme2);
- this.proxyState.setCredentials(this.creds2);
- this.proxyState.setAuthScope(this.authscope2);
HttpContext context = new BasicHttpContext();
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target);
@@ -159,13 +147,11 @@ public class TestResponseAuthCache {
public void testAuthSchemeNotCompleted() throws Exception {
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ this.targetState.setChallengeState(AuthChallengeState.CHALLENGED);
this.targetState.setAuthScheme(this.authscheme1);
- this.targetState.setCredentials(this.creds1);
- this.targetState.setAuthScope(this.authscope1);
+ this.proxyState.setChallengeState(AuthChallengeState.CHALLENGED);
this.proxyState.setAuthScheme(this.authscheme2);
- this.proxyState.setCredentials(this.creds2);
- this.proxyState.setAuthScope(this.authscope2);
HttpContext context = new BasicHttpContext();
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target);
@@ -189,13 +175,11 @@ public class TestResponseAuthCache {
this.authscheme2.processChallenge(
new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm"));
+ this.targetState.setChallengeState(AuthChallengeState.UNCHALLENGED);
this.targetState.setAuthScheme(this.authscheme1);
- this.targetState.setCredentials(this.creds1);
- this.targetState.setAuthScope(null);
+ this.proxyState.setChallengeState(AuthChallengeState.UNCHALLENGED);
this.proxyState.setAuthScheme(this.authscheme2);
- this.proxyState.setCredentials(this.creds2);
- this.proxyState.setAuthScope(null);
HttpContext context = new BasicHttpContext();
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target);
@@ -221,13 +205,11 @@ public class TestResponseAuthCache {
this.authscheme2.processChallenge(
new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=auth-realm"));
+ this.targetState.setChallengeState(AuthChallengeState.FAILURE);
this.targetState.setAuthScheme(this.authscheme1);
- this.targetState.setCredentials(null);
- this.targetState.setAuthScope(this.authscope1);
+ this.proxyState.setChallengeState(AuthChallengeState.FAILURE);
this.proxyState.setAuthScheme(this.authscheme2);
- this.proxyState.setCredentials(null);
- this.proxyState.setAuthScope(this.authscope2);
HttpContext context = new BasicHttpContext();
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target);