Hi Chamila,

Please use following diffs for the 4.2.0 branch.

Thanks,

On Wed, Jan 18, 2017 at 12:52 PM, Chamila De Alwis <[email protected]>
wrote:

> Will do.
>
>
> Regards,
> Chamila de Alwis
> Committer and PMC Member - Apache Stratos
> Senior Software Engineer | WSO2
> Blog: https://medium.com/@chamilad
>
>
>
> On Wed, Jan 18, 2017 at 12:45 PM, Niranjan Karunanandham <
> [email protected]> wrote:
>
>> Hi ChamilaD,
>>
>> Can you look into this?
>>
>> Regards,
>> Nira
>>
>> On Wed, Jan 18, 2017 at 11:47 AM, Thanuja Jayasinghe <[email protected]>
>> wrote:
>>
>>> Hi Team,
>>>
>>> The same fix [1] added for carbon-kernel 4.4.x branch and created the
>>> issue [2] also.
>>>
>>> [1] - https://github.com/wso2/carbon-kernel/pull/1273
>>> [2] - https://github.com/wso2/carbon-kernel/issues/1272
>>>
>>> Thanks,
>>> Thanuja
>>>
>>> On Wed, Jan 18, 2017 at 9:54 AM, Thanuja Jayasinghe <[email protected]>
>>> wrote:
>>>
>>>> Hi Team,
>>>>
>>>> Please find the attached svn diffs created to resolve issue [1] and
>>>> [2]. Please review and commit them.
>>>>
>>>> [1] - https://wso2.org/jira/browse/IDENTITY-5551
>>>> [2] - https://wso2.org/jira/browse/IDENTITY-3457
>>>>
>>>> Thanks,
>>>> Thanuja
>>>>
>>>> --
>>>> *Thanuja Lakmal*
>>>> Senior Software Engineer
>>>> WSO2 Inc. http://wso2.com/
>>>> *lean.enterprise.middleware*
>>>> Mobile: +94715979891 +94758009992
>>>>
>>>
>>>
>>>
>>> --
>>> *Thanuja Lakmal*
>>> Senior Software Engineer
>>> WSO2 Inc. http://wso2.com/
>>> *lean.enterprise.middleware*
>>> Mobile: +94715979891 +94758009992
>>>
>>
>>
>>
>> --
>>
>>
>> *Niranjan Karunanandham*
>> Associate Technical Lead - WSO2 Inc.
>> WSO2 Inc.: http://www.wso2.com
>>
>>
>


-- 
*Thanuja Lakmal*
Senior Software Engineer
WSO2 Inc. http://wso2.com/
*lean.enterprise.middleware*
Mobile: +94715979891 +94758009992
Index: 
src/main/java/org/wso2/carbon/core/services/loggeduserinfo/LoggedUserInfoAdmin.java
===================================================================
--- 
src/main/java/org/wso2/carbon/core/services/loggeduserinfo/LoggedUserInfoAdmin.java
 (revision 219330)
+++ 
src/main/java/org/wso2/carbon/core/services/loggeduserinfo/LoggedUserInfoAdmin.java
 (working copy)
@@ -20,6 +20,7 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.CarbonConstants;
 import org.wso2.carbon.context.PrivilegedCarbonContext;
 import org.wso2.carbon.core.AbstractAdmin;
 import org.wso2.carbon.core.common.LoggedUserInfo;
@@ -48,13 +49,13 @@
             String userName = (String) request.getSession().getAttribute(
                     ServerConstants.USER_LOGGED_IN);
 
-            int index = userName.indexOf("/");
+            int index = userName.indexOf(CarbonConstants.DOMAIN_SEPARATOR);
             if (index < 0) {
                 String domainName = (String) request.getSession().getAttribute(
                         CarbonAuthenticationUtil.LOGGED_IN_DOMAIN);
 
                 if (domainName != null) {
-                    userName = domainName + "/" + userName;
+                    userName = domainName + CarbonConstants.DOMAIN_SEPARATOR + 
userName;
                 }
             }
             LoggedUserInfo loggedUserInfo = new LoggedUserInfo();
Index: src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java
===================================================================
--- src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java      
(revision 219332)
+++ src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java      
(working copy)
@@ -17,6 +17,9 @@
 */
 package org.wso2.carbon.user.core;
 
+import org.apache.commons.lang.StringUtils;
+import org.wso2.carbon.base.ServerConfiguration;
+
 public class UserCoreConstants {
 
     public static final String DATA_SOURCE = "um.datasource";
@@ -62,8 +65,17 @@
 
     public static final String IS_USER_IN_ROLE_CACHE_IDENTIFIER = 
"@__isUserHasTheRole__@";
 
-    public static final String DOMAIN_SEPARATOR = "/";
+    public static final String DOMAIN_SEPARATOR;
 
+    static {
+        String userDomainSeparator = 
ServerConfiguration.getInstance().getFirstProperty("UserDomainSeparator");
+        if (userDomainSeparator != null && 
!userDomainSeparator.trim().isEmpty()) {
+            DOMAIN_SEPARATOR = userDomainSeparator.trim();
+        } else {
+            DOMAIN_SEPARATOR = "/";
+        }
+    }
+
     public static final String PRINCIPAL_USERNAME_SEPARATOR = "_";
 
     public static final String SHARED_ROLE_TENANT_SEPERATOR = 
"@SharedRoleSeperator@";
Index: 
src/main/java/org/wso2/carbon/user/core/ldap/ReadOnlyLDAPUserStoreManager.java
===================================================================
--- 
src/main/java/org/wso2/carbon/user/core/ldap/ReadOnlyLDAPUserStoreManager.java  
    (revision 219332)
+++ 
src/main/java/org/wso2/carbon/user/core/ldap/ReadOnlyLDAPUserStoreManager.java  
    (working copy)
@@ -41,7 +41,9 @@
 import org.wso2.carbon.user.core.util.UserCoreUtil;
 
 import javax.naming.AuthenticationException;
+import javax.naming.CompositeName;
 import javax.naming.InvalidNameException;
+import javax.naming.Name;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.PartialResultException;
@@ -1639,8 +1641,8 @@
                 Attributes userAttributes;
                 try {
                     // '\' and '"' characters need another level of escaping 
before searching
-                    userAttributes = 
dirContext.getAttributes(user.replace("\\\\", "\\\\\\")
-                            .replace("\\\"", "\\\\\""), returnedAttributes);
+                    userAttributes = dirContext.getAttributes(new 
CompositeName().add(user.replace("\\\\", "\\\\\\")
+                            .replace("\\\"", "\\\\\"")), returnedAttributes);
 
                     String displayName = null;
                     String userName = null;
@@ -2787,7 +2789,8 @@
                 if (debug) {
                     log.debug("Using DN: " + group);
                 }
-                Attributes groupAttributes = dirContext.getAttributes(group, 
returnedAttributes);
+                Attributes groupAttributes = dirContext.getAttributes(new 
CompositeName().add(group),
+                        returnedAttributes);
                 if (groupAttributes != null) {
                     Attribute groupAttribute = 
groupAttributes.get(groupNameAttribute);
                     if (groupAttribute != null) {
@@ -3079,10 +3082,12 @@
     /**
      * This method performs the additional level escaping for ldap search. In 
ldap search / and " characters
      * have to be escaped again
-     * @param dn
-     * @return
+     * @param dn DN
+     * @return composite name
+     * @throws InvalidNameException failed to build composite name
      */
-    private String escapeDNForSearch(String dn){
+    private Name escapeDNForSearch(String dn) throws InvalidNameException {
+
         boolean replaceEscapeCharacters = true;
 
         String replaceEscapeCharactersAtUserLoginString = realmConfig
@@ -3097,9 +3102,8 @@
             }
         }
         if (replaceEscapeCharacters) {
-            return dn.replace("\\\\", "\\\\\\").replace("\\\"", "\\\\\"");
-        } else {
-            return dn;
+            dn = dn.replace("\\\\", "\\\\\\").replace("\\\"", "\\\\\"");
         }
+        return new CompositeName().add(dn);
     }
 }
Index: 
src/main/java/org/wso2/carbon/user/core/ldap/ReadWriteLDAPUserStoreManager.java
===================================================================
--- 
src/main/java/org/wso2/carbon/user/core/ldap/ReadWriteLDAPUserStoreManager.java 
    (revision 219332)
+++ 
src/main/java/org/wso2/carbon/user/core/ldap/ReadWriteLDAPUserStoreManager.java 
    (working copy)
@@ -39,6 +39,8 @@
 import org.wso2.carbon.user.core.util.JNDIUtil;
 import org.wso2.carbon.user.core.util.UserCoreUtil;
 
+import javax.naming.CompositeName;
+import javax.naming.InvalidNameException;
 import javax.naming.Name;
 import javax.naming.NameParser;
 import javax.naming.NamingEnumeration;
@@ -523,8 +525,8 @@
                     searchFilter = ((LDAPRoleContext) 
context).getSearchFilter();
                     role = context.getRoleName();
 
-                    if (role.indexOf("/") > -1) {
-                        role = (role.split("/"))[1];
+                    if (role.indexOf(CarbonConstants.DOMAIN_SEPARATOR) > -1) {
+                        role = 
(role.split(CarbonConstants.DOMAIN_SEPARATOR))[1];
                     }
                     String grpSearchFilter = searchFilter.replace("?", 
escapeSpecialCharactersForFilter(role));
                     groupResults =
@@ -2242,10 +2244,11 @@
     /**
      * This method performs the additional level escaping for ldap search. In 
ldap search / and " characters
      * have to be escaped again
-     * @param dn
-     * @return
+     * @param dn DN
+     * @return composite name
+     * @throws InvalidNameException failed to build composite name
      */
-    private String escapeDNForSearch(String dn){
+    private Name escapeDNForSearch(String dn) throws InvalidNameException {
         boolean replaceEscapeCharacters = true;
 
         String replaceEscapeCharactersAtUserLoginString = realmConfig
@@ -2260,9 +2263,9 @@
             }
         }
         if (replaceEscapeCharacters) {
-            return dn.replace("\\\\", "\\\\\\").replace("\\\"", "\\\\\"");
-        } else {
-            return dn;
+            dn = dn.replace("\\\\", "\\\\\\").replace("\\\"", "\\\\\"");
         }
+
+        return new CompositeName().add(dn);
     }
 }
Index: src/main/java/org/wso2/carbon/CarbonConstants.java
===================================================================
--- src/main/java/org/wso2/carbon/CarbonConstants.java  (revision 219332)
+++ src/main/java/org/wso2/carbon/CarbonConstants.java  (working copy)
@@ -15,8 +15,10 @@
  */
 package org.wso2.carbon;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.base.ServerConfiguration;
 import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
 
 import java.io.File;
@@ -373,8 +375,17 @@
     public static final String LOGGED_USER = "logged-user";
 
     /*Constants used in handling multiple user store operations*/
-    public static final String DOMAIN_SEPARATOR = "/";
+    public static final String DOMAIN_SEPARATOR;
 
+    static {
+        String userDomainSeparator = 
ServerConfiguration.getInstance().getFirstProperty("UserDomainSeparator");
+        if (userDomainSeparator != null && 
!userDomainSeparator.trim().isEmpty()) {
+            DOMAIN_SEPARATOR = userDomainSeparator.trim();
+        } else {
+            DOMAIN_SEPARATOR = "/";
+        }
+    }
+
     public static final String NAME_COMBINER = "|";
 
     /*Constants used in handling shared group operations. There must be a 
separator to separate role name and tenant domain*/
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to