You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ol...@apache.org on 2006/01/13 13:25:01 UTC
svn commit: r368699 - in /jakarta/commons/proper/httpclient/trunk:
release_notes.txt
src/java/org/apache/commons/httpclient/auth/DigestScheme.java
src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java
Author: olegk
Date: Fri Jan 13 04:24:45 2006
New Revision: 368699
URL: http://svn.apache.org/viewcvs?rev=368699&view=rev
Log:
PR #38043 (Digest auth uses incorrect URI)
Changelog:
* Digest URI changed to include query parameters
Contributed by Oleg Kalnichevski
Reviewed by Michael Becke and Ortwin Glück
Modified:
jakarta/commons/proper/httpclient/trunk/release_notes.txt
jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/auth/DigestScheme.java
jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java
Modified: jakarta/commons/proper/httpclient/trunk/release_notes.txt
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/release_notes.txt?rev=368699&r1=368698&r2=368699&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/release_notes.txt (original)
+++ jakarta/commons/proper/httpclient/trunk/release_notes.txt Fri Jan 13 04:24:45 2006
@@ -1,5 +1,8 @@
Changes since Release 3.0:
+ * 38043 - Digest URI changed to include query parameters
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* 38004 - Fixed bug causing cyclic redirects when virtual host is set
Contributed by Oleg Kalnichevski <olegk at apache.org>
Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/auth/DigestScheme.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/auth/DigestScheme.java?rev=368699&r1=368698&r2=368699&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/auth/DigestScheme.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/auth/DigestScheme.java Fri Jan 13 04:24:45 2006
@@ -304,7 +304,15 @@
+ credentials.getClass().getName());
}
getParameters().put("methodname", method.getName());
- getParameters().put("uri", method.getPath());
+ StringBuffer buffer = new StringBuffer(method.getPath());
+ String query = method.getQueryString();
+ if (query != null) {
+ if (query.indexOf("?") != 0) {
+ buffer.append("?");
+ }
+ buffer.append(method.getQueryString());
+ }
+ getParameters().put("uri", buffer.toString());
String charset = getParameter("charset");
if (charset == null) {
getParameters().put("charset", method.getParams().getCredentialCharset());
Modified: jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java?rev=368699&r1=368698&r2=368699&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestDigestAuth.java Fri Jan 13 04:24:45 2006
@@ -126,6 +126,22 @@
assertEquals("e95a7ddf37c2eab009568b1ed134f89a", table.get("response"));
}
+ public void testDigestAuthenticationWithQueryStringInDigestURI() throws Exception {
+ String challenge = "Digest realm=\"realm1\", nonce=\"f2a3f18799759d4f1a1c068b92b573cb\"";
+ UsernamePasswordCredentials cred = new UsernamePasswordCredentials("username","password");
+ FakeHttpMethod method = new FakeHttpMethod("/");
+ method.setQueryString("param=value");
+ AuthScheme authscheme = new DigestScheme();
+ authscheme.processChallenge(challenge);
+ String response = authscheme.authenticate(cred, method);
+ Map table = AuthChallengeParser.extractParams(response);
+ assertEquals("username", table.get("username"));
+ assertEquals("realm1", table.get("realm"));
+ assertEquals("/?param=value", table.get("uri"));
+ assertEquals("f2a3f18799759d4f1a1c068b92b573cb", table.get("nonce"));
+ assertEquals("a847f58f5fef0bc087bcb9c3eb30e042", table.get("response"));
+ }
+
public void testDigestAuthenticationWithMultipleRealms() throws Exception {
String challenge1 = "Digest realm=\"realm1\", nonce=\"abcde\"";
String challenge2 = "Digest realm=\"realm2\", nonce=\"123546\"";
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org