-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
8u77
-
x86_64
-
windows_7
FULL PRODUCT VERSION :
A DESCRIPTION OF THE PROBLEM :
if the Plattform Encoding is not "ISO-8859-1", the class
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe
do the wrong encoding to the Basic Auth header.
Normally the webservice client uses this code to send the credentials.
Map<String, Object> ctx = ((BindingProvider) port).getRequestContext();
ctx.put(BindingProvider.USERNAME_PROPERTY, "user");
ctx.put(BindingProvider.PASSWORD_PROPERTY, "üöä");
The Basic-Auth header must be encoded with "ISO-8859-1" but the impletation in class "com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe" does not doing this.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
step into class
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe
take a look where "BindingProvider.PASSWORD_PROPERTY" is used.
the getBytes()-Method is called without StandardCharset.ISO_8859_1
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
// creating the header externally
Map<String, Object> ctx = ((BindingProvider) port).getRequestContext();
Map<String, List<String>> headers=new HashMap<String, List<String>>();
headers.put("Authorization", Arrays.asList("Basic "+DatatypeConverter.printBase64Binary("user:üäö".getBytes(StandardCharsets.ISO_8859_1))));
ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
A DESCRIPTION OF THE PROBLEM :
if the Plattform Encoding is not "ISO-8859-1", the class
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe
do the wrong encoding to the Basic Auth header.
Normally the webservice client uses this code to send the credentials.
Map<String, Object> ctx = ((BindingProvider) port).getRequestContext();
ctx.put(BindingProvider.USERNAME_PROPERTY, "user");
ctx.put(BindingProvider.PASSWORD_PROPERTY, "üöä");
The Basic-Auth header must be encoded with "ISO-8859-1" but the impletation in class "com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe" does not doing this.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
step into class
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe
take a look where "BindingProvider.PASSWORD_PROPERTY" is used.
the getBytes()-Method is called without StandardCharset.ISO_8859_1
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
// creating the header externally
Map<String, Object> ctx = ((BindingProvider) port).getRequestContext();
Map<String, List<String>> headers=new HashMap<String, List<String>>();
headers.put("Authorization", Arrays.asList("Basic "+DatatypeConverter.printBase64Binary("user:üäö".getBytes(StandardCharsets.ISO_8859_1))));
ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);