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
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 219323)
+++ 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 (!StringUtils.isEmpty(userDomainSeparator)) {
+ 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 219323)
+++
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 219323)
+++
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 219323)
+++ 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 (!StringUtils.isEmpty(userDomainSeparator)) {
+ 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