You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Bjorn Townsend (JIRA)" <ax...@ws.apache.org> on 2006/12/28 20:42:21 UTC

[jira] Commented: (AXIS-2599) HTTPSernder: Wrong Basic64 content in Authorization

    [ http://issues.apache.org/jira/browse/AXIS-2599?page=comments#action_12461245 ] 
            
Bjorn Townsend commented on AXIS-2599:
--------------------------------------

Thomas,

Have you tried using CommonsHttpSender instead of HTTPSender?

> 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