BookStack
BookStack copied to clipboard
Can't bind to LDAP
Describe the Bug
- AUTH_METHOD=ldap
- LDAP_VERSION=3
- LDAP_HOST=ldap.example.com:389
- LDAP_BASE_DN=dc=example
- LDAP_DN=cn=admin,dc=example
- LDAP_USER_FILTER=(&(uid={user}))
- LDAP_USERNAME_ATTRIBUTE=uid
- LDAP_EMAIL_ATTRIBUTE=mail
- LDAP_THUMBNAIL_ATTRIBUTE=jpegphoto
- LDAP_PASS=${LDAP_PASSWORD}
- LDAP_TLS=false
[2025-10-10 10:30:27] production.ERROR: ldap_bind(): Unable to bind to server: Can't contact LDAP server {"exception":"[object] (ErrorException(code: 0): ldap_bind(): Unable to bind to server: Can't contact LDAP server at /app/www/app/Access/Ldap.php:104)
[stacktrace]
#0 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(258): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#1 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->{closure:Illuminate\\Foundation\\Bootstrap\\HandleExceptions::forwardsTo():257}()
#2 /app/www/app/Access/Ldap.php(104): ldap_bind()
#3 /app/www/app/Access/LdapService.php(203): BookStack\\Access\\Ldap->bind()
#4 /app/www/app/Access/LdapService.php(51): BookStack\\Access\\LdapService->bindSystemUser()
#5 /app/www/app/Access/LdapService.php(107): BookStack\\Access\\LdapService->getUserWithAttributes()
#6 /app/www/app/Access/Guards/LdapSessionGuard.php(69): BookStack\\Access\\LdapService->getUserDetails()
#7 /app/www/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(340): BookStack\\Access\\Guards\\LdapSessionGuard->attempt()
#8 /app/www/app/Access/LoginService.php(164): Illuminate\\Auth\\AuthManager->__call()
#9 /app/www/app/Access/Controllers/LoginController.php(134): BookStack\\Access\\LoginService->attempt()
#10 /app/www/app/Access/Controllers/LoginController.php(74): BookStack\\Access\\Controllers\\LoginController->attemptLogin()
#11 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\\Access\\Controllers\\LoginController->login()
#12 /app/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction()
#13 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#14 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
#15 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
#16 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Routing\\Router->{closure:Illuminate\\Routing\\Router::runRouteWithinStack():807}()
#17 /app/www/app/Http/Middleware/CheckGuard.php(27): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}()
#18 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckGuard->handle()
#19 /app/www/app/Http/Middleware/RedirectIfAuthenticated.php(28): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#20 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RedirectIfAuthenticated->handle()
#21 /app/www/app/Http/Middleware/Localization.php(32): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#22 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\Localization->handle()
#23 /app/www/app/Http/Middleware/RunThemeActions.php(26): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#24 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\RunThemeActions->handle()
#25 /app/www/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#26 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\CheckEmailConfirmed->handle()
#27 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#28 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#29 /app/www/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#30 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#31 /app/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#32 /app/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#33 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Session\\Middleware\\StartSession->handle()
#34 /app/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#35 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#36 /app/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#37 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#38 /app/www/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#39 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\ApplyCspRules->handle()
#40 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#41 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then()
#42 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack()
#43 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute()
#44 /app/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute()
#45 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch()
#46 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\\Foundation\\Http\\Kernel->{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():198}()
#47 /app/www/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\\Pipeline\\Pipeline->{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():168}()
#48 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\PreventResponseCaching->handle()
#49 /app/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#50 /app/www/app/Http/Middleware/TrustProxies.php(41): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#51 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\\Http\\Middleware\\TrustProxies->handle()
#52 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#53 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#54 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#55 /app/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#56 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()
#57 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#58 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#59 /app/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\\Pipeline\\Pipeline->{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():184}:185}()
#60 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then()
#61 /app/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#62 /app/www/public/index.php(23): Illuminate\\Foundation\\Http\\Kernel->handle()
#63 {main}
"}
Steps to Reproduce
- Try to login.
Expected Behaviour
It should bind and authenticate with LDAP server fine.
Screenshots or Additional Context
No response
Browser Details
No response
Exact BookStack Version
18.4.2-ee.0