Files
glchat/NOTICE
T
grendervill cd1d662572 feat(auth): вход по ключу доступа (passkeys, WebAuthn)
Фаза 7, AGENT.md 7.1: регистрация ключа в настройках безопасности с
обязательным step-up, вход по ключу без пароля (в т.ч. без ввода почты —
обнаруживаемый ключ), несколько ключей на аккаунт, отзыв и переименование,
события безопасности и аудит.

Сервер: github.com/go-webauthn/webauthn (BSD-3-Clause), RP ID и Origin
берутся из конфига домена; если домен — IP-адрес (стенд без домена),
passkeys честно выключены (auth.passkey_unsupported). Церемонии живут в
памяти процесса 5 минут и одноразовые: повторная отправка challenge
отклоняется. Миграция 00018 пересобирает неиспользуемую таблицу
webauthn_credentials под полную запись credential в JSON. Новые ручки
входа ограничены по IP (10/мин).

Клиент: тонкая обёртка над navigator.credentials без тяжёлых SDK,
раздел «Ключи доступа» в настройках безопасности и кнопка «Войти по ключу»
на экране входа; понятные сообщения для браузеров без поддержки WebAuthn
и при отмене диалога.

Тесты: Go — регистрация/вход с эмулятором аутентификатора (реальная
проверка подписи P-256), отказ при чужом challenge, одноразовость
церемонии, обязательный step-up при управлении ключами, запрет входа
забаненному, ограничение allowCredentials при входе с почтой, лимит и
валидация имени; web — 12 vitest с моком navigator.credentials;
Playwright — живой сценарий с виртуальным аутентификатором Chromium.
2026-09-26 15:12:43 +03:00

57 lines
4.3 KiB
Plaintext

# NOTICE — атрибуция и сторонние компоненты
glchat — self-hosted платформа общения.
Copyright (C) 2026 glchat contributors.
Лицензия проекта: **AGPL-3.0-or-later** (полный текст — `LICENSE`).
## Архитектурные референсы
Проект использует **архитектурные идеи** следующих проектов. Их исходный код
в glchat не переносился; любые прямые заимствования фрагментов (включая схемы
и тексты) обязаны фиксироваться в этом файле с указанием источника и лицензии.
| Проект | Лицензия | Что используется |
|---|---|---|
| [Spacebar server](https://github.com/spacebarchat/server) | AGPL-3.0 | Архитектурный референс: структура API/Gateway/CDN/voice, сущности, модель прав |
| [Fermo](https://git.sovrahi.com/oh64/Fermo) | AGPL-3.0 | **Только UX/UI-референс.** Код не используется и не форкается (по просьбе автора) |
## Сторонние компоненты
| Компонент | Лицензия | Использование |
|---|---|---|
| [LiveKit](https://github.com/livekit/livekit) (`livekit/livekit-server`) | Apache-2.0 | SFU для голоса, видео и шаринга экрана (Docker-образ) |
| [LiveKit server SDK for Go](https://github.com/livekit/server-sdk-go) | Apache-2.0 | Выдача токенов, RoomService API (фаза 3) |
| [LiveKit Components](https://github.com/livekit/components-js) | Apache-2.0 | UI голосовых комнат в веб-клиенте (фаза 3) |
| [Caddy](https://github.com/caddyserver/caddy) | Apache-2.0 | TLS/Let's Encrypt, reverse proxy (Docker-образ) |
| [chi](https://github.com/go-chi/chi) | MIT | HTTP-роутер (фаза 1) |
| [huma](https://github.com/danielgtaylor/huma) | MIT | Типизированные хендлеры и OpenAPI 3.1 (фаза 1) |
| [goose](https://github.com/pressly/goose) | MIT | Миграции SQLite (embedded) |
| [sqlc](https://sqlc.dev) | MIT | Генерация кода доступа к БД |
| [mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | MIT | Драйвер SQLite (CGO) |
| [coder/websocket](https://github.com/coder/websocket) | MIT | WebSocket Gateway (фаза 1) |
| [React](https://react.dev) | MIT | Веб-клиент |
| [Vite](https://vite.dev) | MIT | Сборка веб-клиента |
| [Tailwind CSS](https://tailwindcss.com) | MIT | Стили веб-клиента |
| [Radix UI](https://www.radix-ui.com) | MIT | Доступные UI-примитивы |
| [TanStack Query](https://tanstack.com/query) | MIT | Серверное состояние клиента |
| [i18next](https://www.i18next.com) | MIT | Локализация ru/en |
| [age](https://age-encryption.org) (filippo.io/age) | BSD-3-Clause | Шифрование бэкапов |
| [go-webauthn/webauthn](https://github.com/go-webauthn/webauthn) | BSD-3-Clause | Passkeys (WebAuthn): регистрация и вход по ключу (Фаза 7) |
| [fxamacker/cbor](https://github.com/fxamacker/cbor) | MIT | CBOR для WebAuthn (транзитивная зависимость go-webauthn) |
Полный список Go-зависимостей с версиями — `go.mod`/`go.sum`; JS-зависимостей —
`web/package.json`/`web/package-lock.json`. Совместимость лицензий с AGPL-3.0
проверяется при добавлении каждой зависимости (AGENT.md §15).
## Данные
| Файл | Источник | Лицензия |
|---|---|---|
| `internal/auth/data/leaked-passwords.txt` | [SecLists](https://github.com/danielmiessler/SecLists) `Passwords/Common-Credentials/10k-most-common.txt` | MIT |
## Ассеты
Встроенные звуки, иконки и изображения — только CC0, собственные или
сгенерированные, с фиксацией происхождения в этом файле. Сторонние ассеты
без явной лицензии не используются.