Author: fmui
Date: Tue Mar  4 16:40:50 2014
New Revision: 1574130

URL: http://svn.apache.org/r1574130
Log:
Standard authentication provider: added parameter to define the charset for 
username and password

Modified:
    
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
    
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java

Modified: 
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java?rev=1574130&r1=1574129&r2=1574130&view=diff
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
 (original)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
 Tue Mar  4 16:40:50 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.chemistry.opencmis.client.bindings.spi;
 
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -230,7 +231,21 @@ public class StandardAuthenticationProvi
             password = "";
         }
 
-        return Collections.singletonList("Basic " + 
Base64.encodeBytes(IOUtils.toUTF8Bytes(username + ":" + password)));
+        Object charset = 
getSession().get(SessionParameter.AUTH_HTTP_BASIC_CHARSET);
+        if (charset instanceof String) {
+            charset = ((String) charset).trim();
+        } else {
+            charset = IOUtils.UTF8;
+        }
+
+        byte[] usernamePassword;
+        try {
+            usernamePassword = (username + ":" + password).getBytes((String) 
charset);
+        } catch (UnsupportedEncodingException e) {
+            throw new CmisRuntimeException("Unsupported encoding '" + charset 
+ "'!", e);
+        }
+
+        return Collections.singletonList("Basic " + 
Base64.encodeBytes(usernamePassword));
     }
 
     /**

Modified: 
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
URL: 
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java?rev=1574130&r1=1574129&r2=1574130&view=diff
==============================================================================
--- 
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
 (original)
+++ 
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
 Tue Mar  4 16:40:50 2014
@@ -122,6 +122,14 @@ package org.apache.chemistry.opencmis.co
  * <td>depends on {@link #BINDING_TYPE}</td>
  * </tr>
  * <tr>
+ * <td>{@link #AUTH_HTTP_BASIC_CHARSET}</td>
+ * <td>Charset to encode HTTP basic authentication username and password</td>
+ * <td>AtomPub, Web Services, Browser</td>
+ * <td>character set name</td>
+ * <td>no</td>
+ * <td>UTF-8</td>
+ * </tr>
+ * <tr>
  * <td>{@link #AUTH_SOAP_USERNAMETOKEN}</td>
  * <td>Switch to turn UsernameTokens on or off</td>
  * <td>Web Services</td>
@@ -571,6 +579,7 @@ public final class SessionParameter {
      * authentication provider.
      */
     public static final String AUTH_HTTP_BASIC = 
"org.apache.chemistry.opencmis.binding.auth.http.basic";
+    public static final String AUTH_HTTP_BASIC_CHARSET = 
"org.apache.chemistry.opencmis.binding.auth.http.basic.charset";
 
     /**
      * Toggle for OAuth Bearer token authentication. Evaluated by the standard


Reply via email to