Кратко

  • RFC 1485 представлял в тексте уже известный ASN.1 DN; он не искал запись по сокращённому человеческому имени.
  • Разделители, переносы, кавычки, OID, hex-значения и многозначные RDN допускали разные видимые формы структуры.
  • Поздний LDAP отказался от единственной канонической строки: равенство выполняет schema-aware matching, а доверие требует отдельных квитанций.

Имя сменило носитель

В X.500 Distinguished Name был первичным ключом записи и имел структуру ASN.1. Но в визитной карточке или обычном сообщении протокол каталога отсутствовал. RFC 1485 определил ориентированную на пользователя строку, способную представить любой DN. Карточка RFC Editor датирует документ июлем 1993 года и сегодня относит его к Historic.

Это уже найденный DN. RFC 1484 решал предшествующую задачу: purported name запускал контекстный поиск по каталогу. Поэтому темы не повторяются. RFC 1485 исследует, что сохраняется и что теряется, когда известная структура становится текстом.

Удобный вид имел честный предел

Типичные атрибуты получили короткие CN, O, OU, L, ST и C. Необычный тип можно было записать точечным OID, необычное значение — шестнадцатерично. Автор назвал общий escape-механизм ugly и ожидал его лишь для патологических случаев.

Этот некрасивый путь защищал полноту. Общий формат не обязан делать каждый объект разговорным; он обязан не терять редкий тип только ради красивой карточки.

Самый конкретный RDN печатался первым. Между RDN разрешались запятая или точка с запятой, вокруг — пробелы и переносы. Угловые скобки ограничивали имя в тексте, кавычки и escape защищали специальные знаки, + объединял несколько AVA в одном RDN.

Линейный вид скрывал структуру множества

RFC 4512 различает две конструкции. DN — последовательность RDN вдоль дерева. RDN — неупорядоченное множество AVA. Положение RDN имеет значение для пути, а порядок AVA внутри RDN — нет.

Поэтому перестановка частей вокруг + может изменить строку без изменения имени. А неэкранированная запятая может превратить кусок значения в новый RDN. Сходство символов не показывает, что именно разобрал parser.

Короткий descriptor тоже не самодостаточен. Его нужно связать с зарегистрированным типом и schema. Одинаковая метка в интерфейсе не является доказательством одинакового OID или matching rule.

История преемников стала частью интерпретации

Запись RFC 1779 и его текст показывают замену 1485, уточнение escape и нежелательность смешанных разделителей. RFC 2253 перевёл представление в LDAPv3 и UTF-8; его карточка фиксирует дальнейшую замену. Современная LDAP-форма описана в RFC 4514 и его статусе.

Архивной строке нужна версия контракта. Допустимость точки с запятой, значение descriptor и правила Unicode менялись. Прочитать старый DN современным parser без указания профиля — не нейтральная операция.

RFC 4514 допускает, что интерфейс переводит названия типов на местный язык. Значит, отображённая подпись и протокольная строка могут закономерно различаться.

Равенство было программой

RFC 4514 прямо не задаёт canonical string для DN. Рекомендован один алгоритм вывода, но возможны другие соответствующие строки. Сравнение выполняет distinguishedNameMatch из RFC 4517.

Правило проверяет число и позиции RDN, игнорирует порядок AVA внутри каждого RDN и сравнивает значение по equality rule его типа. RFC 4518 готовит международные строки: отображает, нормализует, запрещает отдельные code points и обрабатывает незначимые пробелы. Если нужное сравнение не определено, ответ может быть Undefined.

Побайтовый уникальный индекс вводит собственную модель идентичности. Он способен разделить равные DNs или склеить похожие тексты, которые schema разбирает по-разному. Производительность такого решения не делает его корректным.

CN=Sam не помнил исходный тип

RFC 4514 приводит две X.501-величины со словом Sam: TeletexString и PrintableString. Обе могут отобразиться как CN=Sam. Обратное преобразование не всегда восстанавливает тот же BER или DER. Если приложению нужен точный DER, например для определённой операции с сертификатом, требуется hex-форма.

Читаемость, равенство DN и сохранение исходных octets — разные свойства. Строка может хорошо служить первому и не служить третьему. Ни одно из них автоматически не аутентифицирует человека.

За ссылкой оставалась управляемая запись

RFC 4512 говорит, что DN однозначно ссылается на запись дерева. Запись содержит атрибуты о представленном объекте. Но ссылка не доказывает актуальность атрибутов, контроль человека, валидность сертификата, авторизацию или совершённое действие.

Кроме того, DN может раскрывать имя, адрес, местоположение и организационную принадлежность. RFC 4514 обсуждает защитные меры; RFC 1485 сообщил, что безопасность не рассматривается. Строгая грамматика не создаёт приватность.

Мысли Heng Lu о приоритете работающего кода, минимальной общей спецификации и локальном решении и слоях реальности распределяют полномочия: grammar переносит структуру; schema решает смысл; каталог хранит запись; приложение отдельно аутентифицирует, авторизует и подтверждает результат.

RFC 1485 позволил имени путешествовать. Он не позволил строке заменить мир, на который она указывает.

Источники