Перейти к содержанию

SCode-ACL

Статья из Авикипедии. Энциклопедии

SCode-ACL

SCode ACL (сокращение от Schema-based Compressed Access Control List) — это компактный механизм управления доступом, представленный в 2024 году. В отличие от традиционных вложенных структур, таких как JSON-объекты, он кодирует наборы разрешений в виде числовых индексов, ссылающихся на уплощённую схему путей доступа. Разработан для уменьшения размера передаваемых данных и повышения совместимости с системами, не сохраняющими состояние (stateless), включая JSON Web Tokens (JWT), сессионные куки, а также мобильные и веб-процессы аутентификации.

Обзор[править | править код]

В классических моделях управления доступом разрешения хранятся в виде вложенных пар «ключ-значение» (например, {"user": {"read": true}}). По мере усложнения структуры прав их сериализованное представление увеличивается в объёме. SCode ACL преобразует иерархическую схему разрешений в плоский список путей, разделённых точками, где каждому пути присваивается фиксированный индекс. Набор прав пользователя кодируется строкой с перечислением индексов через пробел (например, "0 2 5"), что сокращает объём данных.

Пример схемы:<syntaxhighlight lang="json"> {

 "user": ["read", "write"],
 "admin": {
   "settings": ["edit", "delete"]
 }

} </syntaxhighlight>…преобразуется в:

  • 0: user.read
  • 1: user.write
  • 2: admin.settings.edit
  • 3: admin.settings.delete

Пользователь с правами user.read и admin.settings.delete будет представлен строкой: "0 3".

Архитектура[править | править код]

SCode ACL включает три основных компонента:

  • Схема разрешений — иерархическая структура, определяющая все возможные пути доступа.
  • Хеш-алгоритм (CRC32 или SHA‑256) — обеспечивает проверку целостности схемы в разных средах.
  • Форматер — выполняет уплощение схемы, индексацию и сериализацию данных.

Закодированные строки ACL содержат хеш схемы, что позволяет проверять совместимость между клиентской и серверной версиями.

Применение[править | править код]

SCode ACL используется в системах, где данные управления доступом должны быть компактными, детерминированными и легко проверяемыми. Основные сценарии:

  • Полезная нагрузка JSON Web Token (JWT)
  • Распределённые процессы аутентификации
  • Одностраничные и мобильные приложения
  • Микросервисы с ограничениями по пропускной способности или требованиями к сериализации

История[править | править код]

Формат был разработан в начале 2024 года инженером-программистом Диёром Умаркуловым для решения проблемы избыточного размера токенов доступа и упрощения обработки разрешений в stateless-средах. Первоначально опубликован как open-source-пакет для Node.js и TypeScript, позднее внедрён в нескольких промышленных системах.

Сравнение[править | править код]

Отличия от других моделей управления доступом:

  • По сравнению с классическими ACL — более компактный и основан на индексах.
  • В отличие от RBAC — не требует промежуточных ролей или их иерархий.
  • В сравнении с ABAC — менее гибкий, но проще в реализации и быстрее обрабатывается.

Реализации[править | править код]

  • — официальный npm-пакет

См. также[править | править код]

  • RBAC
  • ABAC
  • ACL
  • JSON Web Token
  • Stateless-протокол
  • Токен доступа

Ссылки[править | править код]