...
Below is the proposed SIMP OID subtree showing the parent OIDs for attributes and class objects needed for the SIMP DIT.
...
LDAP Custom Schema
simpkv DIT Option 1
The proposed custom schema for the simpkv DIT option 1 is shown below. It has a custom object class , simpkvEntry
, that is comprised of two custom attributes, simpkvKey
and simpkvJsonValue
.
simpkvKey
is a case-invariant string that for the key.This is used as the final RDN of the DN for a key/value node.
simpkvJsonValue
is a case-sensitive string to for the JSON-formatted value.In the future, we could write a custom syntax validator for this attribute.
Code Block |
---|
################################################################################ # dn: cn=schema # ################################################################################ # attributeTypes: ( 1.3.6.1.54.1.47012.1.1.1.1.1.1 NAME 'simpkvKey' DESC 'key' SUP name SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # attributeTypes: ( 1.3.6.1.54.1.47012.1.1.1.1.1.2 NAME 'simpkvJsonValue' DESC 'JSON-formatted value' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE.1.15 SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # objectClasses: ( 1.3.6.1.4.1.47012.1.1.1.1.2.1 NAME 'simpkvEntry' DESC 'simpkv entry' SUP top STRUCTURAL MUST ( simpkvKey $ simpkvJsonValue ) X-ORIGIN 'SIMP simpkv' ) |
The corresponding SIMP OID subtree is as follows:
...
simpkv DIT Option 2
The proposed custom schema for the simpkv DIT option 2 is shown below. It has two custom object classes and three custom attributes.
simpkvFolder
is an object class for a node representing a backend identifier or folder.simpkvEntry
is an object class for a key/value node.simpkvHexId
is an attribute that is a case-invariant, hex-encoded string for the backend identifier, folder or key.This is used as the final RDN of the DN for a node.
In the future, we could write a custom syntax validator for this attribute.
simpkvId
is an attribute that is the raw, case-sensitive string for a backend identifier, folder or key.simpkvJsonValue
is an attribute that is a case-sensitive string for a JSON-formatted value in a key/value node.In the future, we could write a custom syntax validator for this attribute.
Code Block |
---|
################################################################################ # dn: cn=schema # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.1 NAME 'simpkvHexId' DESC 'hex-encoded backend instance, folder, or key name' SUP name SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.2 NAME 'simpkvId' DESC 'backend instance, key or folder name' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.3 NAME 'simpkvJsonValue' DESC 'JSON-formatted value' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # objectClasses: ( 1.3.6.1.4.1.47012.1.1.1.1.2.1 NAME 'simpkvEntry' DESC 'simpkv entry' SUP top STRUCTURAL MUST ( simpkvKey $ simpkvJsonValue ) X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # objectClasses: ( 1.3.6.1.54.1.47012.1.1.1.1.2.12 NAME 'simpkvEntrysimpkvFolder' DESC 'simpkv entry folder in which simpKvHexId represents the relative folder name in hex in the DN' SUP top STRUCTURAL MUST ( simpkvKeysimpkvHexId $ simpkvJsonValuesimpkvId ) X-ORIGIN 'SIMP simpkv' ) |
...
The corresponding SIMP OID subtree is as follows:
...
...
Technologies for Plugin Implementation
...
Options 2 and 3 require additional packaging in order to work on isolated networks for Bolt users. So, if you are going to require a Bolt user to install a package, anyways, might as well be an existing vendor package.
The auto-discovery mechanism can be added after the initial implementation, because it is not required for the LDAP plugin to function.