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