2.4 KiB
2.4 KiB
llldap
Important
You may be looking for lldap instead, a more mature solution with a different feature set.
Is your Lightweight Directory Access Protocol server too heavy and too cumbersome? If your lldap not light enough or are you looking for a solution which supports virtualhosts and multiple-value attributes such as mail aliases? llldap might be just for you!*
Warning
This is not production-ready yet.
Comparison to lldap
Compared to lldap, llldap:
- does not use an SQLite database, but simple text files
- does not use GraphQL to build an API, and therefore does not require custom logic in the client (JS/WASM)
- supports virtualhosts out-of-the-box
- supports mailalias with multiple values in search queries
- support listening on unix domain sockets (UDS) out-of-the-box
Design
Important
Most of these design decisions have not been implemented yet.
- different users can have the same username across different domains, so
foo@bar.comis not the same user asfoo@baz.com - service accounts are separated from normal user accounts, and do not have an associated domain; they allow 3rd-party programs to connect via LDAP with special sets of permissions
- service groups are separated from normal user groups, and do not have an associated domain;
they are meant to store permissions (eg.
admins, ormail) - aliases are supported, but remain associated with a user account forever (more details)
- TODO: should users be able to create custom groups/aliases? that sounds useful, but may need monitoring
to prevent accidental/malicious abuse (such as registering
comptabilité@orlegalteam@)
Potential future features
We may explore in the future:
- i18n domains (punycode)
- i18n user identifiers (TODO: check compatibility with other tools)
- RTL languages
- hierarchical groups
- fine-grained permissions (RBAC)
- running with different async runtimes
- implying base DN from HTTP HOST header (to have
auth.a.localhostandauth.b.localhostwhere users can login without adding the domain part) - making the core logic reusable as a library for custom LDAP behavior
- per-user/domain data retention policies to keep logs of login attempts
- per-domain admins