FDAP is a simple alternative to LDAP based around a single JSON tree and HTTP API.
FDAP (Featherweight Directory Access Protocol) is an iteration on the LDAP concept aiming to simplify and use common data interchange formats (via standard HTTP and JSON). FDAP defines a config/directory server. You can store configs in it, and applications can be configured to read configs from it.
Why have applications get their config from FDAP instead of local config files?
-
It allows you to have mutable configs for applications on otherwise immutable systems
-
It centralizes configuration; modify configs in one place to have it apply everywhere
-
To back configs up, you only have to back up FDAP
The FDAP server maintains a list of applications and tokens, and which paths within the JSON they can access.
Clients (applications) make http requests to the server with a token in an Authorization: Bearer header. By default clients read the token from the FDAP_TOKEN environment variable.
The requests follow the format: https://fdap_server/SEG1/SEG2/.../SEGN where the SEG path segments are the path in the JSON (successive map keys or array indexes from the configuration root). By default the fdap server base url is in the FDAP_BASE_URL environment variable and may include path segments to preceed the SEG above if the server is colocated in an HTTP server at a subpath.
-
GETreturns the JSON subtree at the specified path -
POSTreplaces the JSON subtree at the specified path -
DELETEdeletes the JSON subtree at the specified path
There's two things:
-
openfdap- a simple reference implementation of an FDAP server -
fdap- a Rust library for accessing an FDAP server
-
fdap-login- This is a minimal identity provider reads users from FDAP. It currently supports 3-leg OIDC. -
sunwet- This is an experimental knowledge-graph-based personal-knowledge and file server which can be configured to read config and users from FDAP.
-
"user"- record, each key corresponds to a user ID-
USER_ID"name"- The user's name in its canonical representation
-
-
"fdap_user"- record, each key is an FDAP tokenThis is merged with the identical field in the openfdap config, allowing you to configure new applications while running.