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

Reply via email to