Dexie.js и Dexie Cloud формируют связку, в которой клиентская база данных в браузере дополняется облачным слоем синхронизации, а модель безопасности строится вокруг централизованной аутентификации и декларативной авторизации на уровне данных.
Аутентификация в Dexie Cloud опирается на концепцию идентичности пользователя, связанной с токеном доступа и серверной сессией. В отличие от классических REST API, где каждый запрос может сопровождаться отдельной проверкой, здесь используется долговременная сессия с обновляемыми токенами, которые интегрируются в механизм синхронизации.
Ключевые элементы модели:
Идентичность пользователя становится центральным объектом, определяющим доступ к таблицам и отдельным записям.
Идентичность в Dexie Cloud формируется после прохождения провайдера аутентификации. После успешной аутентификации создаётся сессия, которая закрепляется за устройством.
Сессия включает:
Токен используется не только для API-запросов, но и для синхронизации состояния IndexedDB через Dexie.js.
Dexie Cloud поддерживает модель внешних провайдеров:
При использовании внешнего провайдера процесс выглядит следующим образом:
Ключевой особенностью является то, что идентичность пользователя привязывается к внутреннему user id, а не к внешнему идентификатору напрямую.
На клиентской стороне Dexie.js используется как слой локального хранения, где токены могут сохраняться в IndexedDB или memory storage.
Типовая структура состояния аутентификации:
Токен передаётся в синхронизатор Dexie Cloud, который автоматически добавляет его в заголовки запросов и управляет обновлением при истечении срока действия.
Авторизация в Dexie Cloud не реализуется через императивные проверки в коде клиента. Вместо этого используется правила доступа (access rules), описываемые декларативно.
Основные уровни авторизации:
Пример концептуальной структуры правил:
Row-Level Security является ключевым механизмом контроля данных. Каждая запись может содержать поле владельца или список участников.
Типовые стратегии:
ownerIdownerId и текущего user
idmemberIdsisPublicЭти правила применяются сервером при синхронизации и не зависят от логики клиента.
Синхронизация в Dexie.js и Dexie Cloud тесно связана с системой авторизации.
Процесс синхронизации включает:
Каждая операция синхронизации сопровождается проверкой доступа на сервере, что исключает возможность обхода правил через клиентскую модификацию.
Dexie Cloud использует концепцию data scopes, ограничивающих доступ пользователя к сегментам данных.
Возможные типы scope:
Каждая запись привязывается к одному или нескольким scope, и правила авторизации определяют допустимость операций внутри этих областей.
Мультиарендность реализуется через разделение данных по tenantId. В рамках одной базы могут существовать:
Авторизация контролирует пересечение этих пространств, исключая доступ к данным других tenants.
Система безопасности строится на следующих принципах:
Дополнительно используется защита от повторного использования токенов и проверка целостности сессии при каждом sync-запросе.
Правила авторизации задаются декларативно и интерпретируются сервером Dexie Cloud.
Типовая структура включает:
Условия выражаются через логические операторы и ссылки на поля записи и контекст пользователя.
При несоответствии правил:
Это предотвращает расхождение между локальным состоянием Dexie.js и серверной моделью данных.
Аутентификация определяет кто является пользователем, авторизация определяет что именно доступно этому пользователю.
В Dexie Cloud эти два процесса объединены в единую систему:
Такое разделение позволяет сохранять оффлайн-работу без потери модели безопасности.
Каждый запрос к облаку выполняется в контексте:
Контекст формируется автоматически и используется сервером для оценки всех access rules без участия клиентского кода.
Клиентская сторона в Dexie.js не содержит критической логики безопасности. Любые проверки, реализованные на клиенте, считаются вспомогательными и не влияют на итоговое решение сервера.
Это обеспечивает устойчивость модели к:
Система Dexie Cloud опирается на следующие принципы:
Эти принципы формируют устойчивую модель, в которой оффлайн-режим не снижает уровень безопасности данных.