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-протокол
- Токен доступа