axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Klemmensen (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-2599) HTTPSernder: Wrong Basic64 content in Authorization
Date Tue, 19 Dec 2006 13:23:21 GMT
HTTPSernder: Wrong Basic64 content in Authorization 
----------------------------------------------------

                 Key: AXIS-2599
                 URL: http://issues.apache.org/jira/browse/AXIS-2599
             Project: Apache Axis
          Issue Type: Bug
          Components: Basic Architecture
    Affects Versions: 1.4
         Environment: z/OS (MVS)
JDK 1.4.2
Axis 1.4
            Reporter: Thomas Klemmensen


When we add credentials in the URL we send to AXIS we get some problems with the encoding.

The URL looks something like this:
http://USERID:PASS@1.2.3.4/someprojekt/services/TheService

When class HTTPSender retrieve the userid (USERID) then it does the following:
if (userID != null) {
	StringBuffer tmpBuf = new StringBuffer();
	tmpBuf.append(userID).append(":").append((passwd == null) ? "" : passwd);
	otherHeaders.append(HTTPConstants.HEADER_AUTHORIZATION).append(": Basic ").append(Base64.encode(tmpBuf.toString().getBytes())).append("\r\n");
}

But when we execute we recieve the following error from our service-provider:
[Thu Dec 00 00:00:00 2006] [error] [client 4.3.2.1] user àëòäÆëéözêüôôëêüôôû
not found: /someprojekt/services/TheService

It seems as if we don't use the same encoding.
Looking in to the method String.getBytes() it seems the method uses the value from java.encoding
which should be:
EBCDIC: Denmark  (cp277)

As we look around the class HTTPSender we can see that almost everytime someone gets a byte-array
from a String or makes a String from a byte-array they are using the constant:
HTTPConstants.HEADER_DEFAULT_CHAR_ENCODING (public static final String HEADER_DEFAULT_CHAR_ENCODING
= "iso-8859-1";)

We have tried to put the value inside the existing code so it looks like this:
if (userID != null) {
	StringBuffer tmpBuf = new StringBuffer();
	tmpBuf.append(userID).append(":").append((passwd == null) ? "" : passwd);
	otherHeaders.append(HTTPConstants.HEADER_AUTHORIZATION)
				.append(": Basic ")
				.append(Base64.encode(tmpBuf.toString().getBytes(HTTPConstants.HEADER_DEFAULT_CHAR_ENCODING)))
				.append("\r\n");
}

This seems to work. But we actually don't know if it's a BUG in the first place.
But we hope it is and that is solved in later versions? Otherwise we would very much appreciate
if someone could help with another workaround to our problem.

In advance, Thanx.
Thomas

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message