RFC: 2849
Оригинал: The LDAP Data Interchange Format (LDIF) - Technical Specification
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: pro-ldap.ru

RFC 2849, Страница 2 из 8

Определение LDAP Data Interchange Format

Формат LDIF используется для выражения информации каталога или описания набора изменений, производимых над записями каталога. Файл LDIF состоит из серий записей, отделённых друг от друга строками-разделителями. Запись файла состоит из последовательности строк, описывающих запись каталога, или последовательности строк, описывающих набор изменений записи каталога. Файл LDIF определяет набор записей каталога или набор изменений, применяемых к записям каталога, но не то и другое сразу.

Существует однозначное соответствие между операциями LDAP модификации каталога (add, delete, modify и modrdn) и типами описанных ниже записей изменений changerecord ("add", "delete", "modify" и "modrdn" (или "moddn")). Это соответствие является преднамеренным и позволяет вызывать операции протокола простой трансляцией записей changerecord файла LDIF.

Формальный синтаксис определения LDIF

Приведённое ниже определение использует расширенную форму Бэкуса-Наура, определённую в RFC 2234 [2].

ldif-file                = ldif-content / ldif-changes
ldif-content             = version-spec 1*(1*SEP ldif-attrval-record)
ldif-changes             = version-spec 1*(1*SEP ldif-change-record)
ldif-attrval-record      = dn-spec SEP 1*attrval-spec
ldif-change-record       = dn-spec SEP *control changerecord
version-spec             = "version:" FILL version-number
version-number           = 1*DIGIT
                           ; version-number должен (MUST) быть "1" для
                           ; формата LDIF, описанного в этом документе.
dn-spec                  = "dn:" (FILL distinguishedName /
                                  ":" FILL base64-distinguishedName)
distinguishedName        = SAFE-STRING
                           ; отличительное имя, как определено в [3]
base64-distinguishedName = BASE64-UTF8-STRING
                           ; distinguishedName, закодированное base64
                           ; (смотрите примечание 10 ниже)
rdn                      = SAFE-STRING
                           ; относительное отличительное имя, определённое как
                           ; <name-component> в [3]
base64-rdn               = BASE64-UTF8-STRING
                           ; rdn, закодированное base64
                           ; (смотрите примечание 10 ниже)
control                  = "control:" FILL ldap-oid        ; controlType
                           0*1(1*SPACE ("true" / "false")) ; criticality
                           0*1(value-spec)                ; controlValue
                           SEP
                           ; (смотрите примечание 9 ниже)
ldap-oid                 = 1*DIGIT 0*1("." 1*DIGIT)
                           ; LDAPOID, как определено в [4]
attrval-spec             = AttributeDescription value-spec SEP
value-spec               = ":" (    FILL 0*1(SAFE-STRING) /
                                ":" FILL (BASE64-STRING) /
                                "<" FILL url)
                           ; Смотрите примечания 7 и 8 ниже
url                      = <a Uniform Resource Locator,
                            как определено в [6]>
                                   ; (смотрите примечание 6 ниже)
AttributeDescription     = AttributeType [";" options]
                           ; Определение взято из [4]
AttributeType            = ldap-oid / (ALPHA *(attr-type-chars))
options                  = option / (option ";" options)
option                   = 1*opt-char
attr-type-chars          = ALPHA / DIGIT / "-"
opt-char                 = attr-type-chars
changerecord             = "changetype:" FILL
                           (change-add / change-delete /
                            change-modify / change-moddn)
change-add               = "add"                SEP 1*attrval-spec
change-delete            = "delete"             SEP
change-moddn             = ("modrdn" / "moddn") SEP
                            "newrdn:" (    FILL rdn /
                                       ":" FILL base64-rdn) SEP
                            "deleteoldrdn:" FILL ("0" / "1")  SEP
                            0*1("newsuperior:"
                            (    FILL distinguishedName /
                             ":" FILL base64-distinguishedName) SEP)
change-modify            = "modify"             SEP *mod-spec
mod-spec                 = ("add:" / "delete:" / "replace:")
                           FILL AttributeDescription SEP
                           *attrval-spec
                           "-" SEP
SPACE                    = %x20
                           ; ASCII SP, space
FILL                     = *SPACE
SEP                      = (CR LF / LF)
CR                       = %x0D
                           ; ASCII CR, carriage return
LF                       = %x0A
                           ; ASCII LF, line feed
ALPHA                    = %x41-5A / %x61-7A
                           ; A-Z / a-z
DIGIT                    = %x30-39
                           ; 0-9
UTF8-1                   = %x80-BF
UTF8-2                   = %xC0-DF UTF8-1
UTF8-3                   = %xE0-EF 2UTF8-1
UTF8-4                   = %xF0-F7 3UTF8-1
UTF8-5                   = %xF8-FB 4UTF8-1
UTF8-6                   = %xFC-FD 5UTF8-1
SAFE-CHAR                = %x01-09 / %x0B-0C / %x0E-7F
                           ; любое значение <= 127 (десятичное), за исключением
                           ; NUL, LF и CR
SAFE-INIT-CHAR           = %x01-09 / %x0B-0C / %x0E-1F /
                           %x21-39 / %x3B / %x3D-7F
                           ; любое значение <= 127, за исключением NUL, LF, CR,
                           ; SPACE, двоеточие (":", ASCII 58 десятичное)
                           ; и знак меньше ("<", ASCII 60 десятичное)
SAFE-STRING              = [SAFE-INIT-CHAR *SAFE-CHAR]
UTF8-CHAR                = SAFE-CHAR / UTF8-2 / UTF8-3 /
                           UTF8-4 / UTF8-5 / UTF8-6
UTF8-STRING              = *UTF8-CHAR
BASE64-UTF8-STRING       = BASE64-STRING
                           ; должна (MUST) быть UTF8-STRING,
                           ; закодированная base64
BASE64-CHAR              = %x2B / %x2F / %x30-39 / %x3D / %x41-5A /
                           %x61-7A
                           ; +, /, 0-9, =, A-Z, and a-z
                           ; как определно в [5]
BASE64-STRING            = [*(BASE64-CHAR)]

Страница 2 из 8

2007 - 2022 © Русские переводы RFC, IETF, ISOC.