LDAP Authentication: Malformed LDAP Filter Syntax, Authorization Works Only for Root Admin
- Ngôn ngữ chính
- Java
- Star
- 3.1k
- Fork
- 1.4k
- Merge trung bình
- 6 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 32
Mô tả
### problem
## Issue Description
After upgrading CloudStack from version **4.21.0.0** to **4.22.1.0**, LDAP user authentication stopped working for all roles except **Root Admin**.
### Symptoms
1. **Root Admin** — authentication succeeds, UI works correctly
2. **Non-Root Admin users** — authentication appears to succeed, but after login:
- System cannot load any components in the zone
- UI shows "infinite page loading" that ends in timeout
### Behavior on Fresh Installation
When testing on a new CloudStack 4.22.1.0 instance with LDAP user import, logs show an error — **malformed LDAP filter syntax** (extra opening parenthesis `(` at the end):
```log
{"attributes":["uid","mail","givenname","sn","cn","userAccountControl","memberof"],"baseDN":"DC=ldap,DC=goauthentik,DC=io","bindDN":"cn=ldapservice,ou=users,dc=ldap,dc=goauthentik,dc=io","client":"X.X.X.X.","event":"Search request","filter":"(&(&(objectCategory=person)(objectClass=inetOrgPerson))(uid=*)(
```
### Comparison with Working Version (Root Admin)
On the version where Root Admin works correctly, the filter looks correct:
```log
{"attributes":["cn","mail","givenname","sn","cn","userAccountControl","memberof"],"baseDN":"DC=ldap,DC=goauthentik,DC=io","bindDN":"cn=ldapservice,ou=users,dc=ldap,dc=goauthentik,dc=io","client":"X.X.X.X.","event":"Search request","filter":"(&(&(objectCategory=person)(objectClass=inetOrgPerson))(cn=*))","level":"info","requestId":"c411e2c7-0468-46af-9120-b7d1fc652f36","scope":"Whole Subtree","timestamp":"2026-08-26T11:13:44Z","took-ms":15}
```
### versions
## Environment
| Parameter | Value |
|-----------|-------|
| **Product** | Apache CloudStack |
| **Version (before upgrade)** | 4.21.0.0 |
| **Version (after upgrade)** | 4.22.1.0 |
| **Hypervision** | KVM|
### The steps to reproduce the bug
## Steps to Reproduce
### Scenario 1: Upgrade from 4.21.0.0 → 4.22.1.0
1. Install CloudStack 4.21.0.0 with LDAP authentication configured
2. Upgrade to version 4.22.1.0
3. Attempt to login as a user **without** Root Admin role
4. **Observed result:**
- Login appears successful
- UI does not load components (infinite loading → timeout)
### Scenario 2: Fresh Installation 4.22.1.0
1. Deploy new CloudStack 4.22.1.0 instance
2. Configure LDAP authentication (goauthentik or similar server)
3. Import users from LDAP
4. Check CloudStack Management Server logs
5. **Observed result:**
- LDAP query with malformed filter (extra `(` at the end)
```log
{"attributes":["uid","mail","givenname","sn","cn","userAccountControl","memberof"],"baseDN":"DC=ldap,DC=goauthentik,DC=io","bindDN":"cn=ldapservice,ou=users,dc=ldap,dc=goauthentik,dc=io","client":"X.X.X.X.","event":"Search request","filter":"(&(&(objectCategory=person)(objectClass=inetOrgPerson))(uid=*)(
```
### Comparison with Working Version (Root Admin)
On the version where Root Admin works correctly, the filter looks correct:
```log
{"attributes":["cn","mail","givenname","sn","cn","userAccountControl","memberof"],"baseDN":"DC=ldap,DC=goauthentik,DC=io","bindDN":"cn=ldapservice,ou=users,dc=ldap,dc=goauthentik,dc=io","client":"X.X.X.X.","event":"Search request","filter":"(&(&(objectCategory=person)(objectClass=inetOrgPerson))(cn=*))","level":"info","requestId":"c411e2c7-0468-46af-9120-b7d1fc652f36","scope":"Whole Subtree","timestamp":"2026-08-26T11:13:44Z","took-ms":15}
```
### What to do about it?
## Expected Behavior
- LDAP filter should be syntactically correct
- Users of all roles (not only Root Admin) should successfully authenticate and access the UI
- Filter should match the format: `(&(&(objectCategory=person)(objectClass=inetOrgPerson))(uid=*))`
## Actual Behavior
- LDAP filter contains syntax error: `(&(&(objectCategory=person)(objectClass=inetOrgPerson))(uid=*)(`
- Non-Root Admin users cannot work in UI after authentication
- On fresh installation, LDAP user import fails due to invalid filter
## Questions
1. How to fix permissions in the "upgraded" CloudStack version where only Root Admin can authenticate without issues?
2. How to fix the issue in fresh installation with the LDAP query error (malformed filter syntax)?
Hướng dẫn đóng góp
Hướng nghiên cứu
Trước tiên, hãy tái hiện việc import người dùng LDAP và một lần đăng nhập của người dùng không phải Root Admin trên CloudStack 4.22.1.0, sau đó kiểm tra log của management server và yêu cầu tìm kiếm LDAP được hiển thị trong issue. Công việc được xem là hoàn tất khi bộ lọc LDAP được tạo ra hợp lệ về cú pháp, việc import LDAP thành công và người dùng không có vai trò Root Admin có thể tải UI.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- authentication, backend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100