Hi,
I have added 2 new properties and set values as "users" and "groups" as
follows, so that they will be used as default values.
<Property
name="OrganizationalSubContextUserContextName">users</Property>
<Property
name="OrganizationalSubContextGroupContextName">groups</Property>
I guess a null check is not required as the default values are set as
above. Find the updated patch attached.
Thanks,
Nipuni
On Thu, Aug 14, 2014 at 1:32 PM, Johann Nallathamby <[email protected]> wrote:
> Hi Nipuni,
>
> Two more suggestions.
>
> 1. The same fix needs to be done for the Groups as well. You can define a
> new property for this also.
>
> 2. If these two properties are not there we can go with the default values
> like before, 'users' and 'groups'.
>
> Regards,
> Johann.
>
>
> On Thu, Aug 14, 2014 at 1:25 PM, Nipuni Perera <[email protected]> wrote:
>
>> 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 <[email protected]>
>> wrote:
>>
>>> Hi Nipuni,
>>>
>>>
>>> On Wed, Aug 13, 2014 at 10:52 AM, Nipuni Perera <[email protected]> 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: [email protected]
>>>> 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: [email protected]
>> 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: [email protected]
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..f3627a8 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,10 @@ public class UserCoreConstants {
"OrganizationalSubContextObjectClass";
public static final String PROPERTY_ORG_SUB_CONTEXT_ATTRIBUTE =
"OrganizationalSubContextAttribute";
+ public static final String PROPERTY_ORG_SUB_CONTEXT_USER_CONTEXT_VALUE
=
+ "OrganizationalSubContextUserContextName";
+ public static final String
PROPERTY_ORG_SUB_CONTEXT_GROUP_CONTEXT_VALUE =
+ "OrganizationalSubContextGroupContextName";
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..268e5c1 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_USER_CONTEXT_VALUE);
//eg: ou=users,o=cse.org, dc=cloud, dc=com
String userSearchBase = userContextRDN + "," + organizationRDN +
"," +
partitionDN;
@@ -151,8 +151,8 @@ public class CommonLDAPRealmConfigBuilder implements
MultiTenantRealmConfigBuild
if (("true").equals(bootStrapConfig.
getUserStoreProperty(UserCoreConstants.RealmConfig.READ_GROUPS_ENABLED))) {
//eg: ou=groups
- String groupContextRDN = orgSubContextAttribute + "=" +
- LDAPConstants.GROUP_CONTEXT_NAME;
+ String groupContextRDN = orgSubContextAttribute + "=" +
tenantMgtConfig.getTenantStoreProperties().
+
get(UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_GROUP_CONTEXT_VALUE);
//eg: ou=users,o=cse.org, dc=cloud, dc=com
String groupSearchBase = groupContextRDN + "," +
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..3d83198 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_USER_CONTEXT_VALUE);
//eg: ou=users,o=cse.org, dc=cloud, dc=com
String userSearchBase = userContextRDN + "," + organizationRDN +
"," +
partitionDN;
@@ -131,8 +131,8 @@ public class FileSystemRealmConfigBuilder implements
MultiTenantRealmConfigBuild
//if read ldap group is enabled, set the tenant specific group
search base
if
(("true").equals(bootStrapConfig.getUserStoreProperty(LDAPConstants.READ_LDAP_GROUPS)))
{
//eg: ou=groups
- String groupContextRDN = orgSubContextAttribute + "=" +
- LDAPConstants.GROUP_CONTEXT_NAME;
+ String groupContextRDN = orgSubContextAttribute + "=" +
tenantMgtConfig.getTenantStoreProperties().get(
+
UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_GROUP_CONTEXT_VALUE);
//eg: ou=users,o=cse.org, dc=cloud, dc=com
String groupSearchBase = groupContextRDN + "," +
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..6545115 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
@@ -63,10 +63,6 @@ public class LDAPConstants {
public static final String SHARED_GROUP_SEARCH_BASE =
"SharedGroupSearchBase";
public static final String SHARED_GROUP_NAME_LIST_FILTER =
GROUP_NAME_LIST_FILTER; // "SharedGroupNameListFilter";
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
public static final String PASSWORD_HASH_METHOD = "passwordHashMethod";
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..12e8174 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
@@ -30,7 +30,6 @@ import javax.sql.DataSource;
import org.apache.axiom.om.OMElement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.user.api.RealmConfiguration;
import org.wso2.carbon.user.api.TenantMgtConfiguration;
import org.wso2.carbon.user.core.UserCoreConstants;
@@ -159,22 +158,22 @@ 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_USER_CONTEXT_VALUE),
initialDirContext);
//create group store
- createOrganizationalSubContext(dnOfOrganizationalContext,
- LDAPConstants.GROUP_CONTEXT_NAME,
initialDirContext);
+
createOrganizationalSubContext(dnOfOrganizationalContext,tenantMgtConfig.getTenantStoreProperties().get(
+
UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_GROUP_CONTEXT_VALUE),
initialDirContext);
//create admin entry
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_USER_CONTEXT_VALUE)
+ "," + dnOfOrganizationalContext;
String dnOfUserEntry = createAdminEntry(dnOfUserContext, tenant,
initialDirContext);
@@ -182,8 +181,8 @@ public class CommonHybridLDAPTenantManager extends
JDBCTenantManager {
if (("true").equals(realmConfig.getUserStoreProperty(
UserCoreConstants.RealmConfig.WRITE_GROUPS_ENABLED))) {
//construct dn of group context:
eg:ou=groups,o=cse.org,dc=wso2,dc=com
- String dnOfGroupContext = orgSubContextAttribute + "=" +
- LDAPConstants.GROUP_CONTEXT_NAME + "," +
+ String dnOfGroupContext = orgSubContextAttribute + "=" +
tenantMgtConfig.getTenantStoreProperties().get(
+
UserCoreConstants.TenantMgtConfig.PROPERTY_ORG_SUB_CONTEXT_GROUP_CONTEXT_VALUE)
+ "," +
dnOfOrganizationalContext;
createAdminGroup(dnOfGroupContext, dnOfUserEntry,
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..253543e 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,8 @@
<Property name="OrganizationalAttribute">ou</Property>
<Property
name="OrganizationalSubContextObjectClass">organizationalUnit</Property>
<Property name="OrganizationalSubContextAttribute">ou</Property>
+ <Property
name="OrganizationalSubContextUserContextName">users</Property>
+ <Property
name="OrganizationalSubContextGroupContextName">groups</Property>
</TenantManager>
</TenantManagers>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev