lldap: Light LDAP Implementation
github.com
github.com
Those days I didn't really understand the notion of a tree-like directory. Nowadays I'm think we're better served with a SQL queryable RDBMS to store directory-like data, and modernising the query language using JSON over a HTTP(S) transport.
Isnt this what identity systems like Azure Entra essentially are? I remember that they were always at pains to point out that Azure Active Directory was not Active Directory and didnt do LDAP.
https://en.wikipedia.org/wiki/Lightweight_Directory_Access_P...
Maybe, but most RDBMS' suck a recursive self-referential queries, which mandatory for making a directory system not suck to use.
> modernising the query language using JSON over a HTTP(S) transport
Eh. Modernizing the query language would be nice, but there's a reason most databases don't make HTTP + JSON the primary method by which you interface. Some LDAP systems get absolutely hammered, you don't want a bunch of unnecessary overhead and connection-building to add to it when you really don't need to. Also expressing queries sanely in JSON would be a pain, you'd either just be wrapping a plaintext query in an object or doing something incredibly misguided with trying to represent the query structure as a bad AST using JSON types.
I'll do it in Docker Swarm: if anybody have suggestions or want to work on it together pls let me know
I don't think there's a portable version though.
as always ... imho (!)
disclaimer: i'm a big fan of ldap, especially of the FOSS openldap implementation and i'm using it since ... ever ... (~ 25 years)
i think there is one feature which makes openldap stand out and which in my experience is crucial for any non-trivial directory-implementation someone wants to use:
* easy replication-setups with the possibility to create complex (!) topologies.
what i mean with that is maybe best described by the following "anecdote":
once upon a time i had the use-case of the migration of some mid-sized HPC-clusters - distributed memory - from "good old" NIS to LDAP.
ok ... sounds simple: pam-ldap and be done with it!!
sure, but what happens, if the LDAP main server fails!?
no problem, replicate to a second system as a "fail over" eg. HA ...
sure, but what happens if the network between the HPC-cluster and the LDAP server(s) fails!?
just replicate the directory "read only" to the head-nodes ...
sure, but what happens if the network "in cluster" fails!?
just replicate it to each node ...
now draw out the resulting topology ;))
why? because i wanted to keep the cluster(nodes) utilized even if the "worst case" happens.
last but not least: "openldap is a monster" ... sure, but define monster ... in my experience once you "groked" ldap and delved into the somewhat complex setup of openldap it "just works(tm)" ...
but: great project ... :+1: ... and its written in rust ... yawns ... ;)
just my 0.02€
And that has mostly to do with a lack of good documentation and syntax/system choices that have been made in times where some best practises might not have existed yet.
I must say googling any LDAP issue sucked majorly. But once you get the basic hang of how to do X it is somewhat consistent.
Call a network engineer.
For anything else use the multi-master replication, like the one built-in in ADDC.
That said, the US DoD had a pretty good stab at it, and even today in corners of the defense industrial base you can find companies like Isode that still service that niche. To be fair, x.400 messaging and x.500 directory looked pretty smart back in the day when smtp and passwd were the alternatives. It's just that smtp grew up incredibly fast and quickly outstripped the alternative.
ASN.1 gets a lot of (imho deserved) crap but it's roughly just a bunch of nested TLV (type, length, value) messages, just smeared with a bunch of legacy and a weird definition language. It's not all that different from e.g. Protocol Buffers. Outside of figuring out what context you're in and thus what message type an integer refers to, there's not much that would be "a hard problem" about it.
It flips the script on LDAP as well, instead of the application calling in to the directory, the directory/sync service calls into the application which has some positive security implications.