Кратко

  • RFC 3494 утверждала: независимая реализация LDAPv2 по RFC 1777 не будет взаимодействовать с существующими реализациями, поскольку их синтаксис и семантика ушли от документа.
  • Перевод LDAPv2 и зависимых документов в Historic изменил направление будущей координации. Он не остановил старые серверы, а LDAPv3 сам по себе не доказывал аутентификацию, целостность или конфиденциальность.

Открытая спецификация должна позволять незнакомым разработчикам встретиться на проводе. В истории RFC 3494 произошло обратное. Точный читатель RFC 1777 создавал программу, которая соответствовала публичному договору, но не знала правил, накопленных установленными продуктами.

Первое расхождение касалось символов. RFC 1777 кодировала LDAPString как OCTET STRING, но ограничивала допустимые символы набором IA5; RFC 1778 дополняла представления синтаксисов в контексте T.61. RFC 3494 сообщала, что реальные продукты обычно использовали ISO 8859-1, UCS-2, UTF-8 либо текущую локальную кодировку.

Это были не безразличные расширения. Одинаковые байты могли получить разный смысл, а одно имя — не пережить круговой обмен. ASCII-тест мог пройти, скрыв отказ на именах людей и организаций. Формально правильный новый клиент иногда оказывался менее совместимым, чем продукт, повторявший популярное отклонение.

Второй разрыв уместился в одной букве. RFC 1777 требовала текстовое имя X.500: OID 2.5.4.10 представлялся как organizationName. Существующие LDAPv2-реализации обычно использовали короткое o, то есть NAME из схемы LDAPv3. Обычай преемника вошёл в предшественника раньше официального изменения статуса.

Преобразователь способен связать длинное имя, короткое имя и числовой OID, но это отдельное правило. Затем схема должна принять тип, контроль доступа — разрешить действие, а приложение — правильно обработать значение. Совпавший псевдоним не доказывает идентичность объекта, полномочие или результат операции.

RFC 3494 не говорила, что несовместима каждая пара LDAPv2-продуктов. Системы общего происхождения могли разделять одни и те же отклонения. Её тезис точнее: спецификацию в целом не соблюдали, поэтому независимая реализация спецификации не взаимодействовала бы с существующим парком. Операционный авторитет перешёл от текста к родословной кода.

Так возникает зависимость от поставщика. Исправление отклонения ломает его клиентов; формальная точность нового участника лишает его доступа. Набор тестов начинает проверять сходство с доминирующим продуктом, а не RFC. Документ остаётся публичным, но решающее знание хранится в истории внедрения.

Безопасность давала ещё одну причину уйти. LDAPv2 не имел механизмов целостности или конфиденциальности и, по RFC 3494, не поддерживал современные методы на базе DIGEST-MD5, Kerberos V и открытых ключей X.509. RFC 1777 описывала simple bind с открытым паролем и Kerberos 4. RFC 3377 включила в техническую спецификацию LDAPv3 документы об аутентификации и TLS, отвечая на прежнее замечание IESG.

Однако номер 3 не является квитанцией безопасности. RFC 4510 позднее перестроила набор документов, а RFC 4513 описала методы и требования. Оператор всё равно выбирает механизм, устанавливает защищённый канал, проверяет учётные данные и применяет авторизацию. Версия в Bind свидетельствует о запросе протокола, но не об этих состояниях.

Изменение распространилось по зависимостям. RFC 1781 опиралась на синтаксис RFC 1779, который RFC 2253 больше не поддерживала. RFC 2559 применяла LDAPv2 к репозиториям PKIX, зависела от RFC 1777 и обновляла RFC 1778. RFC 3494 рекомендовала перевести в Historic эти документы, ядро LDAPv2 и уже заменённые RFC 1484, 1485, 1487 и 1488.

Historic — свойство записи, а не процесса. RFC 2026 назначает его заменённой либо считающейся устаревшей спецификации. RFC 2400 предупреждает, что однословный статус лишь ориентир и требует чтения подробного описания применимости. Решение 2003 года советовало не создавать новый LDAPv2 по RFC 1777 и предпочитать LDAPv3. Оно не закрывало порт, не удаляло программу и не измеряло остаточный трафик.

LDAP снизил стоимость входа в X.500 и создал реальное использование. Масштаб позволил практике развить собственные нормы, что и породило конфликт. RFC 3494 выбрала новую цель будущей координации, не объявляя прошлые машины исчезнувшими.

Аудит хранит отдельные доказательства статуса документа, поведения кода, активной настройки, версии, кодировки, псевдонима схемы, механизма безопасности, обмена, авторизации и прикладного результата. Historic подтверждает первое решение и не заменяет остальные наблюдения.

Источники