cd1d662572
Фаза 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.
33 lines
1.0 KiB
Modula-2
33 lines
1.0 KiB
Modula-2
module glchat
|
|
|
|
go 1.26.0
|
|
|
|
require (
|
|
github.com/coder/websocket v1.8.15
|
|
github.com/danielgtaylor/huma/v2 v2.39.1
|
|
github.com/fxamacker/cbor/v2 v2.9.4
|
|
github.com/go-chi/chi/v5 v5.3.2
|
|
github.com/go-webauthn/webauthn v0.18.2
|
|
github.com/mattn/go-sqlite3 v1.14.52
|
|
github.com/pquerna/otp v1.5.0
|
|
github.com/pressly/goose/v3 v3.28.0
|
|
golang.org/x/crypto v0.57.0
|
|
)
|
|
|
|
require (
|
|
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
|
|
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
|
|
github.com/go-webauthn/x v0.3.1 // indirect
|
|
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
|
|
github.com/google/go-tpm v0.9.8 // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/mfridman/interpolate v0.0.2 // indirect
|
|
github.com/philhofer/fwd v1.2.0 // indirect
|
|
github.com/sethvargo/go-retry v0.4.0 // indirect
|
|
github.com/tinylib/msgp v1.6.4 // indirect
|
|
github.com/x448/float16 v0.8.4 // indirect
|
|
go.uber.org/multierr v1.11.0 // indirect
|
|
golang.org/x/sync v0.22.0 // indirect
|
|
golang.org/x/sys v0.48.0 // indirect
|
|
)
|