Hi, Please find the attached patch for the issue. I have added a new property to tenant-mgt.xml.
<Property name="OrganizationalSubContextAttributeValue">user</Property> Removed the constant "LDAPConstants.USER_CONTEXT_NAME" and used the value of newly added property instead. tenantMgtConfig.getTenantStoreProperties().get(UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE); Thanks, Nipuni On Wed, Aug 13, 2014 at 8:53 PM, Johann Nallathamby <joh...@wso2.com> wrote: > Hi Nipuni, > > > On Wed, Aug 13, 2014 at 10:52 AM, Nipuni Perera <nip...@wso2.com> wrote: > >> Hi, >> >> I am working on issue[1]. According to the existing implementation the >> constant "LDAPConstants.USER_CONTEXT_NAME" has been used in several places >> to build OrganizationalSubContextAttribute. If the tenant-mgt.xml is >> updated to read value of property "OrganizationalSubContextAttribute" as >> follows, (current implementation reads only "ou" value: <Property >> name="OrganizationalSubContextAttribute">ou</Property> ) >> >> <Property >> name="OrganizationalSubContextAttribute">ou=users</Property> >> > > Better to have it as a separate property rather than having it as part of > OrganizationSubContextAttribute. You can introduce a new property for the > value only. Otherwise it looks odd and half complete like. > >> >> >> Implementation should updated as below, >> >> 1. CommonHybridLDAPTenantManager.java[3] (line 177), >> CommonLDAPRealmConfigBuilder.java[2] (line 120) and >> FileSystemRealmConfigBuilder.java[4] (line 123) should updated >> accordingly. >> Is this a proper solution? Is there a limited set of values that can be >> set >> to OrganizationalSubContextAttribute? >> 2. It seems line 161 of [3] should read the value >> "PROPERTY_ORGANIZATIONAL_ATTRIBUTE" instead of " >> PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE". This works fine as the default >> configuration set values of both properties to "ou" >> >> eg: current tenant-mgt.xml contains properties below; >> >> <Property name="OrganizationalAttribute">ou</Property> >> <Property >> name="OrganizationalSubContextObjectClass">organizationalUnit</Property> >> <Property >> name="OrganizationalSubContextAttribute">ou</Property> >> >> Thus the correction should be to change, >> >> String organizationNameAttribute = tenantMgtConfig. >> getTenantStoreProperties().get( UserCoreConstants.TenantMgtConfig. >> PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE); >> >> to >> >> String organizationNameAttribute = tenantMgtConfig. >> getTenantStoreProperties().get( UserCoreConstants.TenantMgtConfig. >> PROPERTY_ORGANIZATIONAL_ATTRIBUTE); >> > > This fix is correct. > > >> >> [1] https://wso2.org/jira/browse/CARBON-14863 >> [2] >> https://github.com/wso2-dev/carbon4-kernel/blob/master/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/CommonLDAPRealmConfigBuilder.java >> [3] >> https://github.com/wso2-dev/carbon4-kernel/blob/master/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/tenant/CommonHybridLDAPTenantManager.java >> [4] >> https://github.com/wso2-dev/carbon4-kernel/blob/master/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/FileSystemRealmConfigBuilder.java >> >> Thanks, >> Nipuni >> -- >> Nipuni Perera >> Software Engineer; WSO2 Inc.; http://wso2.com >> Email: nip...@wso2.com >> Git hub profile: https://github.com/nipuni >> Mobile: +94 (71) 5626680 >> <http://wso2.com> >> >> > > > -- > Thanks & Regards, > > *Johann Dilantha Nallathamby* > Associate Technical Lead & Product Lead of WSO2 Identity Server > Integration Technologies Team > WSO2, Inc. > lean.enterprise.middleware > > Mobile - *+94777776950* > Blog - *http://nallaa.wordpress.com <http://nallaa.wordpress.com>* > -- Nipuni Perera Software Engineer; WSO2 Inc.; http://wso2.com Email: nip...@wso2.com Git hub profile: https://github.com/nipuni Mobile: +94 (71) 5626680 <http://wso2.com>
diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java index c1067ab..3a4fdf8 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/UserCoreConstants.java @@ -247,6 +247,8 @@ public class UserCoreConstants { "OrganizationalSubContextObjectClass"; public static final String PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE = "OrganizationalSubContextAttribute"; + public static final String PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE = + "OrganizationalSubContextAttributeValue"; public static final String PROPERTY_MULTI_TENANT_REALM_CONFIG_BUILDER = "MultiTenantRealmConfigBuilder"; diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/CommonLDAPRealmConfigBuilder.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/CommonLDAPRealmConfigBuilder.java index d7ff3da..e795246 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/CommonLDAPRealmConfigBuilder.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/CommonLDAPRealmConfigBuilder.java @@ -117,8 +117,8 @@ public class CommonLDAPRealmConfigBuilder implements MultiTenantRealmConfigBuild //eg: ou=users String orgSubContextAttribute = tenantMgtConfig.getTenantStoreProperties().get( UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE); - String userContextRDN = orgSubContextAttribute + "=" + - LDAPConstants.USER_CONTEXT_NAME; + String userContextRDN = orgSubContextAttribute + "=" + tenantMgtConfig.getTenantStoreProperties().get( + UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE); //eg: ou=users,o=cse.org, dc=cloud, dc=com String userSearchBase = userContextRDN + "," + organizationRDN + "," + partitionDN; diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/FileSystemRealmConfigBuilder.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/FileSystemRealmConfigBuilder.java index 3d748bc..f3d8592 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/FileSystemRealmConfigBuilder.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/config/multitenancy/FileSystemRealmConfigBuilder.java @@ -120,8 +120,8 @@ public class FileSystemRealmConfigBuilder implements MultiTenantRealmConfigBuild //eg: ou=users String orgSubContextAttribute = tenantMgtConfig.getTenantStoreProperties().get( UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE); - String userContextRDN = orgSubContextAttribute + "=" + - LDAPConstants.USER_CONTEXT_NAME; + String userContextRDN = orgSubContextAttribute + "=" + tenantMgtConfig.getTenantStoreProperties().get( + UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE); //eg: ou=users,o=cse.org, dc=cloud, dc=com String userSearchBase = userContextRDN + "," + organizationRDN + "," + partitionDN; diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/ldap/LDAPConstants.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/ldap/LDAPConstants.java index 913c71f..89e8a09 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/ldap/LDAPConstants.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/ldap/LDAPConstants.java @@ -65,7 +65,6 @@ public class LDAPConstants { public static final String SHARED_GROUP_NAME_SEARCH_FILTER = ROLE_NAME_FILTER; // "SharedGroupNameSearchFilter"; //used in tenant management - public static final String USER_CONTEXT_NAME = "users"; public static final String GROUP_CONTEXT_NAME = "groups"; //password diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/tenant/CommonHybridLDAPTenantManager.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/tenant/CommonHybridLDAPTenantManager.java index cffd0d5..4e0b892 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/tenant/CommonHybridLDAPTenantManager.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/tenant/CommonHybridLDAPTenantManager.java @@ -159,13 +159,12 @@ public class CommonHybridLDAPTenantManager extends JDBCTenantManager { //create user store String organizationNameAttribute = tenantMgtConfig.getTenantStoreProperties().get( - UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE); + UserCoreConstants.TenantMgtConfig.PROPERTY_ORGANIZATIONAL_ATTRIBUTE); //eg:o=cse.org,dc=wso2,dc=com String dnOfOrganizationalContext = organizationNameAttribute + "=" + orgName + "," + partitionDN; - createOrganizationalSubContext(dnOfOrganizationalContext, - LDAPConstants.USER_CONTEXT_NAME, initialDirContext); - + createOrganizationalSubContext(dnOfOrganizationalContext,tenantMgtConfig.getTenantStoreProperties().get( + UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE), initialDirContext); //create group store createOrganizationalSubContext(dnOfOrganizationalContext, LDAPConstants.GROUP_CONTEXT_NAME, initialDirContext); @@ -174,7 +173,8 @@ public class CommonHybridLDAPTenantManager extends JDBCTenantManager { String orgSubContextAttribute = tenantMgtConfig.getTenantStoreProperties().get( UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE); //eg: ou=users,o=cse.org,dc=wso2,dc=com - String dnOfUserContext = orgSubContextAttribute + "=" + LDAPConstants.USER_CONTEXT_NAME + String dnOfUserContext = orgSubContextAttribute + "=" + tenantMgtConfig.getTenantStoreProperties().get( + UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE_VALUE) + "," + dnOfOrganizationalContext; String dnOfUserEntry = createAdminEntry(dnOfUserContext, tenant, initialDirContext); diff --git a/core/org.wso2.carbon.user.core/src/main/resources/tenant-mgt.xml b/core/org.wso2.carbon.user.core/src/main/resources/tenant-mgt.xml index ec9c4dc..e7db719 100644 --- a/core/org.wso2.carbon.user.core/src/main/resources/tenant-mgt.xml +++ b/core/org.wso2.carbon.user.core/src/main/resources/tenant-mgt.xml @@ -28,6 +28,7 @@ <Property name="OrganizationalAttribute">ou</Property> <Property name="OrganizationalSubContextObjectClass">organizationalUnit</Property> <Property name="OrganizationalSubContextAttribute">ou</Property> + <Property name="OrganizationalSubContextAttributeValue">users</Property> </TenantManager> </TenantManagers>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev