Crate kanidmd_lib

Source
Expand description

The Kanidmd server library. This implements all of the internal components of the server which is used to process authentication, store identities and enforce access controls.

Modules§

be
The backend. This contains the “low level” storage and query code, which is implemented as a json-like kv document database. This has no rules about content of the server, which are all enforced at higher levels. The role of the backend is to persist content safely to disk, load that content, and execute queries utilising indexes in the most effective way possible.
constants
credential
entry
Entries are the base unit of object storage in the server. This is one of the three foundational concepts along with filters and schema that everything else builds upon.
event
An event is a self contained module of data, that contains all of the required information for any operation to proceed. While there are many types of potential events, they all eventually lower to one of:
filter
Filters are one of the three foundational concepts of the design in kanidm. They are used in nearly every aspect of the server to provide searching of datasets and assertion of entry properties.
idm
The Identity Management components that are layered on top of the QueryServer. These allow rich and expressive events and transformations that are lowered into the correct/relevant actions in the QueryServer. Generally this is where “Identity Management” policy and code is implemented.
macros
modify
Modification expressions and validation. This is how ModifyEvents store and express the series of Modifications that should be applied. These are expressed as “states” on what attribute-values should appear as within the Entry
prelude
A prelude of imports that should be imported by all other Kanidm modules to help make imports cleaner.
repl
schema
Schema is one of the foundational concepts of the server. It provides a set of rules to enforce that Entries ava’s must be compliant to, to be considered valid for commit to the database. This allows us to provide requirements and structure as to what an Entry must have and may contain which enables many other parts to function.
server
server contains the query server, which is the main high level construction to coordinate queries and operations in the server.
status
An actor that shows the servers current status and statistics. (TODO).
testkit
time
value
Inside an entry, the key-value pairs are stored in these Value types. The components of the Value module allow storage and transformation of various types of input into strongly typed values, allows their comparison, filtering and more. It also has the code for serialising these into a form for the backend that can be persistent into the Backend.
valueset

Macros§

btreemap
btreeset
entry_init
f_and
f_inc
f_or
filter
filter_all
filter_rec
match_class_filter
Build a filter which matches class == input
mergemaps
mergesets
modlist
smolset
vs_bool
vs_cid
vs_iname
vs_iutf8
Takes EntryClass objects and makes a ValueSetIutf8
vs_refer
vs_syntax
vs_utf8
vs_uuid