mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-07 11:19:38 +03:00
LDAP Login Performance Issue in BookStack with Large AD Environment #5317
Open
opened 2026-02-05 09:57:13 +03:00 by OVERLORD
·
14 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🐛 Bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#5317
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @titafubaki on GitHub (Jun 16, 2025).
Describe the Bug
When using LDAP for authentication in BookStack, the login process takes excessively long, often exceeding 60 seconds. This delay is significant enough that I had to adjust the PHP timeout settings to successfully log in. The Active Directory environment in use contains a large number of groups (approximately 108,000) and users (approximately 83,000). Despite the scale of the AD environment, other software solutions utilizing LDAP do not experience similar performance issues, suggesting that the implementation method in BookStack may be contributing to the problem.
Steps to Reproduce
Expected Behaviour
The login process should complete in a reasonable time frame, similar to other software solutions using LDAP.
Screenshots or Additional Context
No response
Browser Details
MS Edge 137 on Win11
Exact BookStack Version
25.05
@ssddanbrown commented on GitHub (Jun 17, 2025):
Hi @titafubaki, is there significant group nesting (groups members of groups) in this environment?
My first thought is that this may be due to our recursive group lookup.
@titafubaki commented on GitHub (Jun 17, 2025):
Hi @ssddanbrown, while there is indeed some degree of nested groups present in our AD setup, my experience suggests that this nesting is not extensive. However, in our situation, the nesting levels are relatively shallow, which should not contribute substantially to the delays we're experiencing as I even get them in cases I assign groups directly to the users.
@ssddanbrown commented on GitHub (Jun 17, 2025):
Okay, thanks for the response.
Do you have a specific slow test-case you can use to generate some numbers. I'd be interested to know for a single test-scenario:
Just trying to understand the actual scale and shape of the group heirachy/nesting at play.
Also, It'd be great to confirm login time with
LDAP_USER_TO_GROUPS=falseset (group sync disabled) just to confirm that this is due to group sync behaviour specifically rather than something something more generic like request latency or DNS.@titafubaki commented on GitHub (Jun 17, 2025):
Sorry, I have to clarify, this is with LDAP_USER_TO_GROUPS=false. It does not seem to add any significant time on top to enable it. This was my thinking as well so I have tried to not use it.
I can anyway construct a test szenario to have some raw numbers if needed.
@ssddanbrown commented on GitHub (Jun 17, 2025):
Ah, that's interesting then, should only be a few connections made.
If possible, It'd be great if you could replicate the same kinda of action using the ldapsearch CLI tool from the very same BookStack host (if/how that's installed may depend on OS in use). So use all the same details (user, password, base DN) and perform a search using the same filter as set for BookStack.
Then see if that also takes a very long time via the CLI, or if that's super quick.
@titafubaki commented on GitHub (Jun 18, 2025):
Hi @ssddanbrown,
I conducted a test using the ldapsearch CLI tool on the same Ubuntu 24.04 system where BookStack is running. I utilized the same LDAP user and connection details as configured in BookStack. Here is the command I used:
ldapsearch -x -H ldaps://XXX.XXX.XXX:636
-D "CN=SOMEUSER,OU=Users,OU=OU4,OU=OU3,OU=OU2,OU=OU1,DC=XXX,DC=XXX,DC=XXX"
-w 'PASSWORD'
-b "OU=OU1,DC=XXX,DC=XXX,DC=XXX"
-s sub "(&(sAMAccountName=SOMEUSERNAME))"
-v
The search executed for the same user account took approximately 3 seconds to complete.
@titafubaki commented on GitHub (Jun 24, 2025):
Hi @ssddanbrown, maybe something else interesting. If the user credentials at logon are wrong I get almost immediately an error. When they are right it just start loading for a minute or so and then log in.
@ssddanbrown commented on GitHub (Jun 24, 2025):
@titafubaki Interesting; All that should occur after that is a bind as the user account, using the provided password.
You could test that like above, but just ensure you're binding via the login account.
I'm still sceptical if groups are in play, but that maybe your env changes are stuck/cached with group sync enabled. Group sync behaviour is way more likely to lead to this kind of scenario.
AUTH_METHODback to standard, does the login form top field change back to email?@titafubaki commented on GitHub (Jun 25, 2025):
Hi There, good guess :D
it seems to be stuck. I use the linuxserver/bookstack docker deployment and the variables are defined in the compose file.
changing back to standard does not show the email field.
@ssddanbrown commented on GitHub (Jun 25, 2025):
After changing env options, are you re-creating (re-upping) the stack, or at least the BookStack container?
If you are just restarting the existing containers, that might not applying the config changes.
@titafubaki commented on GitHub (Jul 4, 2025):
You was right it was stuck. reupping removed the delay. but when enabling the group sync again it is slow again.
@titafubaki commented on GitHub (Jul 4, 2025):
I'm not a programmer by trade, but I've reviewed some of the code. It appears that BookStack attempts to retrieve all groups recursively for a user during login. This process can be time-consuming, especially if a user belongs to many groups or if those groups are deeply nested. Wouldn't it be more efficient to reverse the approach by examining the groups defined within the roles and querying them? This could be done in the background rather than during each user login. If that's not feasible, at the very least, making the group synchronization asynchronous could prevent it from slowing down the login process itself. Please correct me if I'm wrong.
@ssddanbrown commented on GitHub (Jul 4, 2025):
Maybe, depending on how BookStack & the LDAP system is configured, but I think we'd still need to traverse the tree from the user to validate how the found groups link to the user's actual groups.
We rarely have async functionality, only specific things via an option, since the technology stack at play does not allow async behaviour by default.
Even if it did allow it (or we made this an option) I'm not too comfortable with having user rights managed async like that, especially if already taking a minute. I'm pretty sure that would be reported back to me as a security issue. I'd rather leave it as a critical part of login for predictability.
@Golden-Chicken97 commented on GitHub (Aug 20, 2025):
Our Bookstack instance is also having Problems with a very slow login process. I have been getting complaints that it sometimes takes over 10 seconds to load. We are also using LDAP and nested Groups but on a much smaller scale.
Inside of the Bookstack Instance there 95 Roles