Dashboard > ApacheDS Addons > ... > Access Controls > ABNF syntax for LDAP ACIItem
ABNF syntax for LDAP ACIItem
Added by Ersin Er, last edited by Emmanuel Lécharny on Dec 21, 2006  (view change) show comment
Labels: 
(None)


The ABNF syntax for LDAP ACIItem is as follows:

ACIItem = "{" sp aci_identificationTag
              sep sp aci-precedence
              sep sp aci-authenticationLevel
              sep sp aci-itemOrUserFirst sp "}"

aci_identificationTag   = id-identificationTag msp DirectoryString

aci-precedence          = id-precedence msp Precedence

aci-authenticationLevel = id-authenticationLevel msp AuthenticationLevel

aci-itemOrUserFirst = id-itemOrUserFirst msp aci-itemOrUserFirst

aci-itemOrUserFirst = aci-itemFirst / aci-userFirst

aci-itemFirst       = id-itemFirst ":" ItemFirst

aci-userFirst       = id-userFirst ":" UserFirst

ItemFirst = "{" sp aci-protectedItems
                sep sp aci-itemPermissions sp "}"

UserFirst = "{" sp aci-userClasses
                sep sp aci-userPermissions sp "}"

aci-protectedItems    = id-protectedItems msp ProtectedItems

aci-itemPermissions   = id-itemPermissions msp ItemPermissions

aci-userClasses       = id-userClasses msp UserClasses

aci-userPermissions   = id-userPermissions msp UserPermissions

ProtectedItems = "{" [ sp aci-entry]
                     [ sep sp aci-allUserAttributeTypes ]
                     [ sep sp aci-attributeType ]
                     [ sep sp aci-allAttributeValues ]
                     [ sep sp aci-allUserAttributeTypesAndValues ]
                     [ sep sp aci-attributeValue ]
                     [ sep sp aci-selfValue ]
                     [ sep sp aci-rangeOfValues ]
                     [ sep sp aci-maxValueCount ]
                     [ sep sp aci-maxImmSub ]
                     [ sep sp aci-restrictedBy ]
                     [ sep sp aci-classes ] sp "}"

ItemPermissions = "{" [ sp ItemPermission
                        *( sep sp ItemPermission ) ] sp "}"

ItemPermission = "{" [ sp aci-precedence ]
                       sep sp aci-userClasses
                       sep sp aci-grantsAndDenials sp "}"

UserClasses = "{" [ sp aci-allUsers ]
                  [ sep sp aci-thisEntry ]
                  [ sep sp aci-Name ]
                  [ sep sp aci-userGroup ]
                  [ sep sp aci-subtree ] sp "}"

UserPermissions = "{" [ sp UserPermission
                        *( sep sp UserPermission ) ] sp "}"

UserPermission = "{" [ sp aci-precedence ]
                       sep sp aci-protectedItems
                       sep sp aci-grantsAndDenials sp "}"

aci-entry                          = id-entry

aci-allUserAttributeTypes          = id-allUserAttributeTypes

aci-attributeType                  = id-attributeType msp AttributeTypes

aci-allAttributeValues             = id-allAttributeValues msp AttributeTypes

aci-allUserAttributeTypesAndValues = id-allUserAttributeTypesAndValues

aci-attributeValue                 = id-attributeValue msp AttributeTypeAndValues

aci-selfValue                      = id-selfValue msp AttributeTypes

aci-rangeOfValues                  = id-rangeOfValues msp Filter

aci-maxValueCount                  = id-maxValueCount msp MaxValueCount

aci-maxImmSub                      = id-maxImmSub msp INTEGER

aci-restrictedBy                   = id-restrictedBy msp RestrictedBy

aci-classes                        = id-classes msp Refinement

aci-grantsAndDenials               = id-grantsAndDenials msp GrantsAndDenials

aci-allUsers                       = id-allUsers

aci-thisEntry                      = id-thisEntry

aci-name                           = id-name msp DistinguishedNames

aci-userGroup                      = id-userGroup msp DistinguishedNames

aci-subtree                        = id-subtree msp SubtreeSpecifications

AttributeTypes = "{" sp AttributeType
                     *( sep sp AttributeType ) sp "}"

AttributeTypeAndValues = "{" sp AttributeTypeAndValue
                             *( sep sp AttributeTypeAndValue ) sp "}"

MaxValueCount = "{" sp AttributeType
                    sep sp INTEGER sp "}"

RestrictedBy = "{" sp RestrictedValue
                   *( sep sp RestrictedValue ) sp "}"

GrantsAndDenials = "{" [ sp GrantAndDenialsBit
                         *( sep sp GrantAndDenialsBit ) ] sp "}"
                   ; WARNING: There SHALL NOT be any duplicates

DistinguishedNames = "{" sp DistinguishedName
                         *( sep sp DistinguishedName ) sp "}"


SubtreeSpecifications = "{" sp SubtreeSpecification
                            *( sep sp SubtreeSpecification ) sp "}"

RestrictedValue = "{" sp aci-type
                      sep sp aci-valuesIn "}"

aci-type     = id-type msp AttributeType

aci-valuesIn = id-valuesIn msp AttributeType

Precedence   = INTEGER(1..255) ; FIXME: How shall we show this ?

AuthenticationLevel = id-none / id-simple / id-strong

GrantAndDenialsBit = id-grantAdd
                     / id-denyAdd
                     / id-grantDiscloseOnError
                     / id-denyDiscloseOnError
                     / id-grantRead
                     / id-denyRead
                     / id-grantRemove
                     / id-denyRemove
                     / id-grantBrowse
                     / id-denyBrowse
                     / id-grantExport
                     / id-denyExport
                     / id-grantImport
                     / id-denyImport
                     / id-grantModify
                     / id-denyModify
                     / id-grantRename
                     / id-denyRename
                     / id-grantReturnDN
                     / id-denyReturnDN
                     / id-grantCompare
                     / id-denyCompare
                     / id-grantFilterMatch
                     / id-denyFilterMatch
                     / id-grantInvoke
                     / id-denyInvoke

;MYRULE
;id-X = "X"
The Apache Directory Server way...

Apache Directory Server allows a fully flexible version of this grammar where order of named components and amount of spaces (where applicable) do not matter.


Can you give a handful of example ACIItems for common situations so users can better infer how this syntax comes together. We're probably going to have to write up some kind of user guide chapter for this though.

Site running on a free Atlassian Confluence Open Source Project License granted to Safehaus. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.4 Build:#809 Jun 12, 2007) - Bug/feature request - Contact Administrators