Expand my Community achievements bar.

SOLVED

Use BTreeManager with UserManager for user management in AEM 5.6.1?

Avatar

Level 1

We are running into the notorious 1000+ child node issue in the JCR for users, and we are trying to provide a solution without moving to a SSO or LDAP solution as the client does not have the budget for such a solution.

Given the little documentation available for BTreeManager, I was wondering if there is a way to implement BTreeManager with UserManager to handle account creation and sign in, or will we have to create our own UserManager class to handle account creation with a BTreeManager implementation?

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Hi,

You are not required to follow the geometrixx that closely :-)

I just created a user named "abc@geometrixx.com" and placed the usernode below /home/users/geometrixx/a/b/c/abc@geometrixx.com. Worked.

kind regards,
Jörg

View solution in original post

7 Replies

Avatar

Employee Advisor

Hi John,

how does your process to create users look like? IIRC you can specify a path to the user node if you use the /usermanager console.

kind regards,
Jörg

Avatar

Level 10

There is an API:

 http://docs.adobe.com/docs/en/cq/5-5/javadoc/org/apache/jackrabbit/commons/flat/BTreeManager.html

You can use this API within custom services for AEM. There is no reason why you cannot build a custom user manager service with AEM using this API. 

However - i am not aware of any task-based documentation that shows using this API within AEM. If you want better documentation to show task-based information, please log a support ticket. 

Avatar

Level 1

Yes, I know we can build a custom user manager, but we were wondering if that could be avoided, as it's fraught with risk and regression.

Thanks.

Avatar

Level 1

The users are under /home/users/mysite and then are hashed based on the first and second characters of the username (e-mail address) as follows:

/home/users/x/[first-char]/[second-char]/[username]

Example

Username: jblow@x.com

JCR path: /home/users/mysite/j/b/jblow@x.com

John

Avatar

Correct answer by
Employee Advisor

Hi,

You are not required to follow the geometrixx that closely :-)

I just created a user named "abc@geometrixx.com" and placed the usernode below /home/users/geometrixx/a/b/c/abc@geometrixx.com. Worked.

kind regards,
Jörg

Avatar

Level 1

Yes, that's what we're doing now and it works, but it's not using BTreeManager, which is what we're wanting to do. The current hashing approach has hit the 1000 node/branch wall, which is the crux of the problem.

John

Avatar

Employee Advisor

Hi,

the /useradmin does not require any BTreeManager, because you can choose the path freely via the user interface. You're free to use /home/users/site/u/us/username1 for a user, and user /home/users/site/u/us2/username2 for a different user. You can choose any arbitrary node structure, you don't need to put all users in a single directory or use a directory structure which is just 1 level deep. Use 3 or 4 levels if you really require it.

But a certain point I would really think of an external Identity Management system.

kind regards,
Jörg