Продолжение статьи Схемы, объекты, атрибуты. Часть 1, посвященное атрибутам.
Описание атрибута является типичным определением класса в ООП, с наследованием. Синтаксис описания атрибутов:
Единственным обязательным полем является OID, все остальные поля могут быть опущены или имеют значение по умолчанию. Разберем список полей:
Атрибут 'o' имеет более длинный синоним 'organizationName' и является наследником атрибута 'name'. Атрибут 'name' является строковым (1.3.6.1.4.1.1466.115.121.1.15 - UTF-8 строка), поддерживает сравнение без учета регистра (caseIgnoreMatch) и поиск по частичному значению без учета регистра (caseIgnoreSubstringsMatch).
Атрибут 'description' является самостоятельно определенным атрибутом, идентичным по характеристикам атрибуту 'name'. За исключением допустимой длины поля: 'name' допускает 32k текста в качестве значения, а 'description' только 1к.
Атрибут 'dc' имеет синоним 'domainComponent' и является ASCII строкой (1.3.6.1.4.1.1466.115.121.1.26 - IA5 String syntax). Используются правила сравнения без учета регистра (caseIgnoreIA5Match) и поиск по неполному значению без учета регистра (caseIgnoreIA5SubstringMatch).
Полный список допустимых вариантов синтаксиса атрибутов можно найти на странице: LDAPv3 Syntaxes. Там же описываются требования к значениям атрибута, которые накладывает тот или иной синтаксис.
Часто встречающиеся правила сравнения:
Часто встречающиеся правила сортировки:
Часто встречающиеся правила сравнения подстрок:
В следующей части этой темы мы создадим собственное расширение схемы и применим его на практике.
Описание атрибута является типичным определением класса в ООП, с наследованием. Синтаксис описания атрибутов:
attributetype = "("
OID атрибута
[ "NAME" символьное имя ]
[ "DESC" описание ]
[ "SUP" OID предка ]
[ "EQUALITY" OID правила сравнения]
[ "ORDERING" OID правила сортировки ]
[ "SUBSTR" OID правила получения подстроки ]
[ "SYNTAX" OID правила проверки синтаксиса данных ]
[ "SINGLE-VALUE" ]
")"
Единственным обязательным полем является OID, все остальные поля могут быть опущены или имеют значение по умолчанию. Разберем список полей:
- NAME - имя, которое будет являться синонимом OID. Имя должно быть уникальным в пределах тех схем, которые используются в вашем каталоге.
- DESC - описание атрибута, помогает при чтении схемы человеком понять назначение атрибута
- SUP - OID или имя атрибута, от которого наследуются свойства
- EQUALITY - OID или имя правила сравнения значений атрибута, например integerMatch позволит использовать не только знак равенства при поиске по значению атрибута, но так же сравнения > (больше) и < (меньше)
- ORDERING - OID или имя правила сортировки атрибутов, например caseIgnoreOrderingMatch сортирует значения строковых атрибутов без учета регистра.
- SUBSTR - OID или имя правила работы с подстроками значения атрибута, имеет смысл только для атрибутов, которые строятся на синтаксисе строк.
- SYNTAX - OID правила проверки синтаксиса значения, например - 1.3.6.1.4.1.1466.115.121.1.27, описывает целочисленный атрибут. Попытка присвоить ему значение с символами выходящими за рамки [0-9] вызовет ошибку.
- SINGLE-VALUE - указывает что данный атрибут может принимать только одно значение при создании экземпляра объекта. По умолчанию атрибуты могут иметь множественные значение.
Отвлечемся от теории и посмотрим на описания трех атрибутов двух классов dcObject и organization, которые использовались в первой статье:
attributetype ( 2.5.4.41 NAME ('name')
DESC 'RFC4519: common supertype of name attributes'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' )
DESC 'RFC2256: organization this object belongs to'
SUP name )
attributetype ( 2.5.4.13 NAME ('description')
DESC 'RFC4519: descriptive information'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
attributetype ( 0.9.2342.19200300.100.1.25
NAME ( 'dc' 'domainComponent' )
DESC 'RFC1274/2247: domain component'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
Атрибут 'o' имеет более длинный синоним 'organizationName' и является наследником атрибута 'name'. Атрибут 'name' является строковым (1.3.6.1.4.1.1466.115.121.1.15 - UTF-8 строка), поддерживает сравнение без учета регистра (caseIgnoreMatch) и поиск по частичному значению без учета регистра (caseIgnoreSubstringsMatch).
Атрибут 'description' является самостоятельно определенным атрибутом, идентичным по характеристикам атрибуту 'name'. За исключением допустимой длины поля: 'name' допускает 32k текста в качестве значения, а 'description' только 1к.
Атрибут 'dc' имеет синоним 'domainComponent' и является ASCII строкой (1.3.6.1.4.1.1466.115.121.1.26 - IA5 String syntax). Используются правила сравнения без учета регистра (caseIgnoreIA5Match) и поиск по неполному значению без учета регистра (caseIgnoreIA5SubstringMatch).
Полный список допустимых вариантов синтаксиса атрибутов можно найти на странице: LDAPv3 Syntaxes. Там же описываются требования к значениям атрибута, которые накладывает тот или иной синтаксис.
Часто встречающиеся правила сравнения:
| Имя правила | OID правила | Область применения (синтаксис атрибута) |
| caseExactIA5Match | 1.3.6.1.4.1.1466.109.114.1 | IA5 String (ascii) 1.3.6.1.4.1.1466.115.121.1.26 |
| caseExactMatch | 2.5.13.5 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| caseIgnoreIA5Match | 1.3.6.1.4.1.1466.109.114.2 | IA5 String (ascii) 1.3.6.1.4.1.1466.115.121.1.26 |
| caseIgnoreMatch | 2.5.13.2 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| distinguishedNameMatch | 2.5.13.1 | DN 1.3.6.1.4.1.1466.115.121.1.12 |
| generalizedTimeMatch | 2.5.13.27 | Generalized Time 1.3.6.1.4.1.1466.115.121.1.24 |
| integerFirstComponentMatch | 2.5.13.29 | Integer 1.3.6.1.4.1.1466.115.121.1.27 |
| integerMatch | 2.5.13.14 | Integer 1.3.6.1.4.1.1466.115.121.1.27 |
| objectIdentifierFirstComponentMatch | 2.5.13.30 | OID 1.3.6.1.4.1.1466.115.121.1.38 |
| objectIdentifierMatch | 2.5.13.0 | OID 1.3.6.1.4.1.1466.115.121.1.38 |
| octetStringMatch | 2.5.13.17 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| telephoneNumberMatch | 2.5.13.20 | Telephone Number 1.3.6.1.4.1.1466.115.121.1.50 |
| uTCTimeMatch | 2.5.13.25 | UTC Time 1.3.6.1.4.1.1466.115.121.1.53 |
Часто встречающиеся правила сортировки:
| Имя правила | OID правила | Область применения (синтаксис атрибута) |
| caseExactOrderingMatch | 2.5.13.6 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| caseIgnoreOrderingMatch | 2.5.13.3 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| distinguishedNameOrderingMatch | 1.3.18.0.2.4.405 | DN 1.3.6.1.4.1.1466.115.121.1.12 |
| generalizedTimeOrderingMatch | 2.5.13.28 | Generalized Time 1.3.6.1.4.1.1466.115.121.1.24 |
| Имя правила | OID правила | Область применения (синтаксис атрибута) |
| caseExactSubstringsMatch | 2.5.13.7 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| caseIgnoreSubstringsMatch | 2.5.13.4 | Directory String (UTF-8) 1.3.6.1.4.1.1466.115.121.1.15 |
| telephoneNumberSubstringsMatch | 2.5.13.21 | Telephone Number 1.3.6.1.4.1.1466.115.121.1.50 |
Комментариев нет:
Отправить комментарий