mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-08 12:58:11 -05:00
[GH-ISSUE #24377] issue: LDAP signup does not trigger WEBHOOK_URL notification (signup webhook only fires for password and OAuth signups) #58951
Reference in New Issue
Block 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 @JulienDelRio on GitHub (May 5, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/24377
Check Existing Issues
Installation Method
Docker
Open WebUI Version
v0.9.2
Ollama Version (if applicable)
No response
Operating System
Debian 12 (Coolify host)
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
When a new user account is created in Open WebUI through any supported authentication method (password signup, OAuth, or LDAP), and a
WEBHOOK_URLis configured in the admin settings, Open WebUI should send a POST request to the configured URL with the standard signup payload:This is the documented behavior of the admin signup webhook (https://docs.openwebui.com/features/administration/webhooks/) and is required for any external automation that reacts to new user creation: auto-promotion workflows, provisioning, audit logging, notification channels.
Actual Behavior
When a new user is provisioned through the LDAP authentication path (first successful LDAP login that creates the local user record),
WEBHOOK_URLis never called. No HTTP request is emitted, no log line is produced, and any external system listening for signup events is silently bypassed.The webhook does fire correctly for:
signup_handlerinrouters/auths.py)utils/oauth.py)But not for LDAP signups, which go through a different code path (
ldap_authinrouters/auths.py) wherepost_webhook(...)is never invoked. This looks like an unintentional omission rather than a design choice — see the root cause analysis in Additional Information.Steps to Reproduce
docker exec -it open-webui curl -v -X POST <webhook_url> -H "Content-Type: application/json" -d '{"test":"manual"}'The request must succeed and appear on webhook.site. This rules out networking, DNS, TLS, or proxy issues.
{"action": "signup", ...}payload. This confirms the webhook configuration itself is correct — the issue is specific to the LDAP code path.7.Logs & Screenshots
Browser console: N/A (server-side issue).
Docker logs are not included to avoid leaking internal infrastructure details. The behavior is fully reproducible and the source-code analysis in "Additional Information" pinpoints the omission directly.
Visual evidence (attached):
webhook.siteremains empty after a successful LDAP signup — the new user is created in Admin Panel → Users at the same timestamp.webhook.sitereceives the expected{"action": "signup", ...}payload after a control password signup with the sameWEBHOOK_URLconfigured. This confirms the webhook configuration is correct and the issue is specific to the LDAP code path.Additional Information
Root cause analysis
A direct read of
backend/open_webui/routers/auths.pyon the currentdevbranch confirms the omission.Password signup path (
signup_handler, around line 711) — webhook IS called after user creation:OAuth signup path (
backend/open_webui/utils/oauth.py, around line 1681) — webhook IS also called.LDAP signup path (
ldap_auth, around lines 502–543) — webhook is NOT called. The function inserts the user viaAuths.insert_new_auth, handles the first-user-becomes-admin promotion, callsapply_default_group_assignment, and returns directly tocreate_session_response, skipping the webhook entirely.Since OAuth follows the same pattern as password signup but LDAP does not, this looks like an unintentional gap rather than a design choice.
Suggested fix
Add the same
post_webhookblock toldap_authimmediately afterapply_default_group_assignment, scoped to theif not user:branch so the webhook fires only on actual user creation, not on subsequent logins of existing LDAP users.I'd happily contribute a PR if maintainers confirm the fix is wanted, but I don't currently have a test environment matching the project's quality bar to validate it properly. Hence this issue rather than a PR.
Impact
This affects deployments that combine LDAP authentication with downstream automation triggered by new user signup events:
pendingtouserbased on an external pre-authorization listWorkaround: polling
GET /api/v1/users/filtered onrole=='pending'every few minutes works as a substitute, just with higher latency.Related work
The scoped-events webhook system in PR #16426 / discussion #16428 introduces an
auth.user.signupevent type. If/when that work lands, the LDAP path will need to be wired in there as well — same fix at the same location.@owui-terminator[bot] commented on GitHub (May 5, 2026):
🔍 Similar Issues Found
I found some existing issues that might be related. Please check if any of these are duplicates or contain helpful solutions:
#23582 issue: [Bug] OIDC Authentication fails after Identity Provider Key Rotation (bad_signature)
by IRScorpio ·
bug#21300 issue: LDAP authentication causes the service to hang
by Booting-O ·
bug#20389 issue: ENABLE_SIGNUP not working properly
by jayteaftw ·
bug#20240 LDAP Authentication Failed (HTTP 400) despite valid config & successful ldap3 connection test
by AgatheBauer ·
bug#19792 issue: OAuth Login redirects to https://openwebui.domain.org/oauth/oidc/openwebui.domain.org after succesful login
by StNiosem ·
bug💡 If this is a duplicate, consider closing it and adding details to the existing issue.
This comment was generated automatically. React with 👍 if helpful, 👎 if not.