You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ke...@apache.org on 2003/03/25 00:19:19 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/realm RealmBase.java
keith 2003/03/24 15:19:19
Modified: . RELEASE-NOTES-4.1.txt
catalina/src/share/org/apache/catalina/authenticator
DigestAuthenticator.java
catalina/src/share/org/apache/catalina/realm RealmBase.java
Log:
Improve digest auth compatibility
PR: 9851
Submitted by: Carlos Quiroz <ca...@nokia.com>
Revision Changes Path
1.71 +3 -1 jakarta-tomcat-4.0/RELEASE-NOTES-4.1.txt
Index: RELEASE-NOTES-4.1.txt
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/RELEASE-NOTES-4.1.txt,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- RELEASE-NOTES-4.1.txt 19 Mar 2003 01:33:16 -0000 1.70
+++ RELEASE-NOTES-4.1.txt 24 Mar 2003 23:19:18 -0000 1.71
@@ -731,6 +731,8 @@
JDBCStore
Fix bug where first session in result set was skipped.
+[4.1.25] #9851
+ Improve Digest Authentication compatibility
----------------
Coyote Bug Fixes:
1.11 +15 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java
Index: DigestAuthenticator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/DigestAuthenticator.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DigestAuthenticator.java 19 Oct 2001 16:23:57 -0000 1.10
+++ DigestAuthenticator.java 24 Mar 2003 23:19:19 -0000 1.11
@@ -313,8 +313,14 @@
nc = currentTokenValue;
if ("cnonce".equals(currentTokenName))
cnonce = removeQuotes(currentTokenValue);
- if ("qop".equals(currentTokenName))
- qop = removeQuotes(currentTokenValue);
+ if ("qop".equals(currentTokenName)) {
+ //support both quoted and non-quoted
+ if (currentTokenValue.startsWith("\"") &&
+ currentTokenValue.endsWith("\""))
+ qop = removeQuotes(currentTokenValue);
+ else
+ qop = currentTokenValue;
+ }
if ("uri".equals(currentTokenName))
uri = removeQuotes(currentTokenValue);
if ("response".equals(currentTokenName))
@@ -323,6 +329,9 @@
if ( (userName == null) || (realmName == null) || (nOnce == null)
|| (uri == null) || (response == null) )
+ return null;
+
+ if (qop != null && (cnonce == null || nc == null))
return null;
// Second MD5 digest used to calculate the digest :
1.13 +10 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/realm/RealmBase.java
Index: RealmBase.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/realm/RealmBase.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- RealmBase.java 9 Jun 2002 02:19:43 -0000 1.12
+++ RealmBase.java 24 Mar 2003 23:19:19 -0000 1.13
@@ -336,7 +336,7 @@
/**
* Return the Principal associated with the specified username, which
* matches the digest calculated using the given parameters using the
- * method described in RFC 2069; otherwise return <code>null</code>.
+ * method described in RFC 2617; otherwise return <code>null</code>.
*
* @param username Username of the Principal to look up
* @param clientDigest Digest which has been submitted by the client
@@ -369,7 +369,11 @@
String md5a1 = getDigest(username, realm);
if (md5a1 == null)
return null;
- String serverDigestValue = md5a1 + ":" + nOnce + ":" + nc + ":"
+ String serverDigestValue;
+ if (!"auth".equals(qop))
+ serverDigestValue = md5a1 + ":" + nOnce + ":" + md5a2;
+ else
+ serverDigestValue = md5a1 + ":" + nOnce + ":" + nc + ":"
+ cnonce + ":" + qop + ":" + md5a2;
String serverDigest =
md5Encoder.encode(md5Helper.digest(serverDigestValue.getBytes()));
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org