Аутентификация администратора
SubLane Руководство: аутентификация администратора.
SubLane Использует глобальные локальные идентификаторы и членство в рабочем пространстве с владельцами, администраторами или членами. Первый администратор владеет начальным рабочим пространством. Сеансы распределяются по рабочим пространствам, а разрешения распределяются по выбранному рабочему пространству. Доступ к члену для разрешений, ссылок на приглашения и жизненного цикла учетной записи. Персональные ключи шлюза доступны через отдельный API Ключевой рабочий процесс. Жизненный цикл пароля и локальная команда восстановления описаны в описании. командный контроль.
Первая установка
Начинать SubLane обычно и открыть пользовательский интерфейс. Если в базе нет администратора, /setup показывает приветственную страницу, объясняющую поток настройки. Настройка старта открывать /setup/adminСначала введите имя пользователя и пароль администратора, затем продолжайте отдельный шаг, чтобы назвать первое рабочее пространство. Отправка второго шага создает как записи, так и знаки. Отдельного ключа инициализации не требуется.
Волшебник использует /setup/admin; обновление возвращается на шаг администратора. Оба маршрута настройки недоступны после инициализации: подписанные посетители заходят в логин, а подписанные пользователи заходят в свое рабочее пространство, соответствующее их роли. В хранилище браузера не хранится состояние входа или учетные данные.
Заполните настройку локально, прежде чем открывать экземпляр другим пользователям. До завершения инициализации любой, кто может получить доступ к странице настройки, может создать первого администратора. Прослушиватель по умолчанию и Compose Порт хоста остается привязанным к обратной связи.
Имена пользователей используют 3-32 буквы ASCII, цифры, подчеркивания или дефисы, начиная с буквы или номера. Они чувствительны к регистру и хранятся в строчке. Новые пароли используют 8-20 символов Unicode и не обрезаны. Логин продолжает принимать существующие пароли до предыдущего лимита в 128 символов.
Администратор, первое рабочее пространство, членство в собственности и первая сессия совершаются в одной транзакции. Охраняемая вставка гарантирует, что одновременные запросы на установку не смогут заменить первого администратора. Инициализация закрывается после того, как транзакция увенчалась успехом, а перезапуск службы не возобновляет ее.
Базы данных о наследии, созданные до составления консолидированной схемы предварительного выпуска, не обновляются автоматически. Сохранить старый каталог до запуска нового экземпляра. Базы данных, уже включенные в консолидированную схему, получают миграцию приглашений на добавление. Остаток setup.key от более ранней сборки разработки не используется новым экземпляром.
Удаление или замена базы данных не является процедурой восстановления пароля. reset-admin-password --password-stdin команду для существующего администратора или аутентифицированные потоки изменения/перезагрузки, описанные в командный контроль.
Сессии
- Login использует непрозрачный, криптографически случайный 256-битный токен в файле cookie HttpOnly, SameSite=Lax.
- SQLite Сохраняется только дайджест SHA-256.
- Сеансы истекают через 12 часов, без продления на скольжение.
- На каждого пользователя сохраняется максимум пять сеансов. Новый логин заменяет только самый старый избыток сеанса этого пользователя.
- Logout отменяет текущую сессию SQLite Перед тем, как сообщить об успехе и очистить печенье.
- Сеансы переживают нормальный процесс перезапуска.
- Браузер хранит темы и языковые предпочтения локально, но никогда не сессионные токены.
Пользовательский интерфейс ожидает состояния сеанса сервера, прежде чем показывать защищенные страницы. Он периодически перепроверяет состояние на фокусе и возвращается к входу в систему, когда защищенный API Запрос сообщает о просроченной сессии. Вывод отменяет ожидающие запросы и очищает личные кэшированные данные. Справочная сессия проверяет также чистые личные данные при изменении идентификатора пользователя или роли.
Обратные прокси и HTTPS
Для развертывания сети, прекратить HTTPS на вашем обратном прокси и установите внешне видимое происхождение:
SUBLANE_PUBLIC_URL=https://sublane.example.com ./bin/sublaneПроисхождение должно содержать только схему, хост и факультативный порт. Пути, учетные данные, параметры запроса и фрагменты отвергаются. HTTPS Публичное происхождение позволяет использовать безопасные куки, даже если используется внутреннее прокси-соединение. HTTP.
Без этого параметра проверки одного и того же происхождения используют хост запроса и фактическое состояние TLS. Передаваемый хост, протокол и заголовки одноранговых устройств не являются неявно доверенными. Vite явно сохраняет исходный хост на своем API Прокси для местного развития.
Держите бэкэнд связанным с обратной связью или частной сетью за прокси. HTTPS для доступа к сети; локальный HTTP Дефолт – это развитие.
Запрос защиты и ограничения ресурсов
Все маршруты управления под /api/ Требуется действительная включенная сессия администратора по умолчанию, за исключением явных конечных точек аутентификации. /api/keys и явно выраженный /api/me/requests, /api/me/password, /api/me/limits и /api/me/usage Конечные точки защищены как для ролей, так и для обеспечения права собственности. Члены могут читать свое собственное состояние сессии и подписываться, но не могут получить доступ к API управления администратором. Статические активы SPA остаются общедоступными; рендеринг пакета приложений не предоставляет доступ к данным управления.
Мутации требуют точного заголовка Origin с тем же происхождением, отклоняют метаданные Fetch и принимают JSON Аутные тела ограничены 4 киб и имеют пятисекундный срок чтения.
Настройка, вход в систему и регистрация приглашений имеют пятикратный лимит на одно соединение и шестидесятикратный глобальный лимит. Responses Включает Retry-After при дросселировании. Ограничительное состояние ограничено 1024 пирами и является локальным процессом, поэтому перезапуск сбросов счетчиков. За обратным прокси клиенты разделяют бюджет прокси до тех пор, пока не будет введена явная поддержка доверенного прокси.
Вывод пароля ограничен двумя параллельными операциями. Argon2id использует 19 MiB, две итерации и одну полосу, следующую за Базовое хранилище паролей OWASPЭти ограничения не являются гарантией полной памяти процесса.
API
| Конечная точка | Доступ | Результат |
|---|---|---|
GET /api/auth/state | Публичное | initialized текущий пользователь, или null |
POST /api/auth/setup | Только неинициализированные случаи | Создайте администратора, названного первым рабочим пространством, и сеанс |
POST /api/auth/login | Имя пользователя / пароль | Создайте новую сессию |
POST /api/auth/register | Действительная ссылка на приглашение | Создайте вход и сессию участника в приглашенном рабочем пространстве |
POST /api/auth/logout | Запрос одного и того же происхождения | Отмените текущий токен и очистите его cookie |
GET /api/system | Сессия администратора | Статус инстанции |
GET/POST /api/members | Сессия администратора | Начало списка или создание члена |
POST /api/members/invitations | Сессия администратора | Создайте одноразовое приглашение, действительное в течение семи дней |
PATCH /api/members/{id} | Сессия администратора | Включить или отключить участника |
GET /healthz, GET /readyz | Публичное | Жизнеспособность/готовность |
Настройка и вход принимают username и password; форма настройки проверяет подтверждение пароля перед отправкой. Logout принимает пустой JSON Аутентичные ответы состояния включают в себя постоянный идентификатор пользователя, имя пользователя и admin или member Роль, и никогда не содержат токенов или хешей паролей.Ответы об ошибках содержат стабильные коды для локализованных фронтенд-сообщений.
Для командной строки HTTP Клиенты, предоставьте правильный заголовок Origin и JSON Не ставьте учетные данные в историю оболочки или не делитесь ими в отчетах об ошибках.
Двухфакторная аутентификация · Ключи доступа
/preferences
Добавьте код из приложения-аутентификатора к входу по паролю. Настройка действует во всех рабочих пространствах. Входите без пароля по отпечатку, лицу или PIN-коду устройства. Проверенный ключ также выполняет требование двухфакторной аутентификации. Можно добавить до 10 ключей.
Храните коды в безопасном месте. Каждый заменяет код аутентификатора один раз. Повторно они не показываются. Замена аннулирует все предыдущие коды.
Для ключей доступа нужен HTTPS или localhost и браузер с поддержкой WebAuthn JSON.