keycloak-aplcache

Details

diff --git a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/BasicAuthRequestAuthenticator.java b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/BasicAuthRequestAuthenticator.java
index 176b1d2..a787eaa 100755
--- a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/BasicAuthRequestAuthenticator.java
+++ b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/BasicAuthRequestAuthenticator.java
@@ -71,9 +71,12 @@ public class BasicAuthRequestAuthenticator extends BearerTokenRequestAuthenticat
         AccessTokenResponse atr=null;        
         try {
             String userpw=new String(Base64.decode(tokenString));
-            String[] parts=userpw.split(":");
-            
-            atr = getToken(parts[0], parts[1]);
+            int seperatorIndex = userpw.indexOf(":");
+            String user = userpw.substring(0, seperatorIndex);
+            String pw = userpw.substring(seperatorIndex + 1);
+            log.debug("user: " + user);
+            log.debug("pw: " + pw);
+            atr = getToken(user, pw);
             tokenString = atr.getToken();
         } catch (Exception e) {
             log.debug("Failed to obtain token", e);
@@ -82,8 +85,8 @@ public class BasicAuthRequestAuthenticator extends BearerTokenRequestAuthenticat
         }
 
         return authenticateToken(exchange, atr.getToken());
-    }
-    
+    } 
+ 
     private AccessTokenResponse getToken(String username, String password) throws Exception {
     	AccessTokenResponse tokenResponse=null;
     	HttpClient client = deployment.getClient();
diff --git a/core/src/main/java/org/keycloak/util/BasicAuthHelper.java b/core/src/main/java/org/keycloak/util/BasicAuthHelper.java
index f31865a..56b2890 100755
--- a/core/src/main/java/org/keycloak/util/BasicAuthHelper.java
+++ b/core/src/main/java/org/keycloak/util/BasicAuthHelper.java
@@ -54,8 +54,10 @@ public class BasicAuthHelper
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-        String[] split = val.split(":");
-        if (split.length != 2) return null;
-        return split;
+        int seperatorIndex = val.indexOf(":");
+        if(seperatorIndex == -1) return null;
+        String user = val.substring(0, seperatorIndex);
+        String pw = val.substring(seperatorIndex + 1);
+        return new String[]{user,pw};
     }
 }
diff --git a/services/src/main/java/org/keycloak/protocol/saml/profile/ecp/authenticator/HttpBasicAuthenticator.java b/services/src/main/java/org/keycloak/protocol/saml/profile/ecp/authenticator/HttpBasicAuthenticator.java
index f6821b6..85be04f 100644
--- a/services/src/main/java/org/keycloak/protocol/saml/profile/ecp/authenticator/HttpBasicAuthenticator.java
+++ b/services/src/main/java/org/keycloak/protocol/saml/profile/ecp/authenticator/HttpBasicAuthenticator.java
@@ -11,6 +11,8 @@ import org.keycloak.models.RealmModel;
 import org.keycloak.models.UserCredentialModel;
 import org.keycloak.models.UserModel;
 
+import org.jboss.logging.Logger;
+
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
@@ -20,6 +22,7 @@ public class HttpBasicAuthenticator implements Authenticator {
 
     private static final String BASIC = "Basic";
     private static final String BASIC_PREFIX = BASIC + " ";
+    private Logger log = Logger.getLogger(HttpBasicAuthenticator.class);
 
     @Override
     public void authenticate(final AuthenticationFlowContext context) {
@@ -94,7 +97,14 @@ public class HttpBasicAuthenticator implements Authenticator {
         }
 
         try {
-            return new String(Base64.decode(credentials)).split(":");
+            String val = new String(Base64.decode(credentials));
+            int seperatorIndex = val.indexOf(":");
+            if(seperatorIndex == -1) return null;
+            String user = val.substring(0, seperatorIndex);
+            String pw = val.substring(seperatorIndex + 1);
+            log.debug("user: " + user);
+            log.debug("pw: " + pw);
+            return new String[]{user,pw};
         } catch (final IOException e) {
             throw new RuntimeException("Failed to parse credentials.", e);
         }