mirror of
https://github.com/lldap/lldap.git
synced 2026-04-25 08:15:52 +03:00
[GH-ISSUE #1260] [SUPPORT] LLDAP with TAK server #445
Labels
No labels
backend
blocked
bug
cleanup
dependencies
docker
documentation
duplicate
enhancement
enhancement
frontend
github_actions
good first issue
help wanted
help wanted
integration
invalid
ldap
pull-request
question
rust
rust
tests
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/lldap-lldap#445
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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 @sgofferj on GitHub (Aug 22, 2025).
Original GitHub issue: https://github.com/lldap/lldap/issues/1260
Describe the bug
LLDAP forces custom attribute names to lower case. This creates problems with at least TAK server which expects its custom attributes
to be in camel case.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
LLDAP should not force custom attributes to lower case.
Logs
LLDAP
OpenLDAP
@sgofferj commented on GitHub (Aug 22, 2025):
Seems, TAK server also expects a custom objectClass named takObjectClass. I suppose, we can't have those?
@nitnelave commented on GitHub (Aug 22, 2025):
The LDAP protocol defines attributes as case insensitive, and they should be interpreted as such by the clients. I would consider that a TAK bug.
As for custom object classes, you can add a class to every user or every group (though not in the UI, it's not implemented yet). You can use lldap-cli for that
@sgofferj commented on GitHub (Aug 22, 2025):
Thank you for your reply! I actually manually changed the attribute names in the DB to be camel case. Also added all object classes but no joy. I'm not really an LDAP expert - if the output of ldapsearch is identical, does it mean it should work from LDAP point of view? I'm trying to figure out where I need to turn some screws.
@nitnelave commented on GitHub (Aug 22, 2025):
I would strongly recommend against changing the values in the DB (or accessing the DB directly at all). I'm not 100% sure, but I think the attributes will not match anything anymore since we do case insensitive comparisons by turning the inputs to lowercase and checking against the DB value. If that's not lowercase, nothing can match.
@sgofferj commented on GitHub (Aug 22, 2025):
Yeah, you are right, the UI didn't work anymore 😆 .
I used the ldiffs here to set up the test with OpenLDAP: https://github.com/takcluster/takserver-ldap/tree/main
It would be great if you could give some advice on how to get LLDAP working with TAK because OpenLDAP really is a monster!
@nitnelave commented on GitHub (Aug 22, 2025):
I expect that it'll require a code change in TAK if they expect camel case attributes.
@sgofferj commented on GitHub (Aug 22, 2025):
It also didn't work when I changed the attribute names in the DB and LLDAP returned the attribute names in camel case. Something else must be off...
@sgofferj commented on GitHub (Aug 22, 2025):
The OpenLDAP config has some long numbers in them which look like they could be some UUIDs or something. Is that maybe something which is need for the attributes to work? I wiresharked the connection between the TAK server and LLDAP and those attributes didn't show up by name in any packet.
@nitnelave commented on GitHub (Aug 23, 2025):
That's part of the schema, and these are alternate names for the attributes. LDAP clients sometimes can use either, but the readable names are more common
@sgofferj commented on GitHub (Aug 24, 2025):
Is it possible to use define those "UUID"s in LLDAP? E.g. can I use that as objectClass / attribute name? Is there a way to find out what the TAK server requests? As I mentioned, I'm not familiar at all with the LDAP protocol and also Wireshark doesn't seem to be able to do more than display the hexdump of the packets. I'm completely in the dark but I would really like to use LLDAP for my TAK server and get rid of OpenLDAP.
@nitnelave commented on GitHub (Aug 24, 2025):
In verbose mode, LLDAP logs all the requests/responses it receives, so you should be able to see what's going on (though it is a bit verbose, you can grep for SearchRequest and SearchResponse or SearchRequestResponse to filter out most of the irrelevant stuff)
@sgofferj commented on GitHub (Aug 24, 2025):
The only thing I found which appeared to be related was this.
in a do_search return.
I don't see any explicit requests for those "UUIDs".
I tried to add those UUIDs as custom attributes but LLDAP won't let me because of the ".".
I bury LLDAP then and go back to OpenLDAP with their lousy web UI and huge mem consumption...
@nitnelave commented on GitHub (Aug 24, 2025):
Yeah, we don't send the UUIDs for the attributes.
Honestly, it's worth filing a bug with TAK for the case insensitive attributes, it's not LDAP compliant.
@sgofferj commented on GitHub (Aug 24, 2025):
I don't even know if the case matters. When I changed the attribute names in the DB, LLDAP did return the attribute names in camel case and TAK server still ignored it, so my best guess is that it looks at those UUIDs. But as I said, I don't know anything about the LDAP protocol. TAK is a US DoD product. Without a developer contract you don't get access to their bugtracker. The version here on GitHub is years old and the account appears abandoned.
I tried looking into the TAK server source but it's pretty complicated. I couldn't find anything holding up orange signs "I'm doing the LDAP attribute stuff".
If there's no interest from the LLDAP project side to help make it work, I can't use LLDAP because I don't know how. No hard feelings, I know how open source works 🙂
@sgofferj commented on GitHub (Aug 24, 2025):
As a last resort, I went through everything again, figured out that the names of the attributes can be defined in the TAK server config, set the attribute names as lowercase, tried again and still not. So I know now that the attributes are recognized by name, not by UUID because the names can be configured.
I'm now completely at the end of any ideas.