
🔐 Изучайте аутентификацию, создавая её правильно. Расширяемая, соответствующая стандартам эталонная реализация для Cloudflare Workers с Hono, Turso, PBKDF2 и JWT-сессиями с двойными токенами.
Изучайте аутентификацию, создавая её правильно.
Примечание к демо: Конечная точка входа защищена адаптивными PoW-задачами — повторные неудачи увеличивают сложность доказательства работы. Ограничение частоты запросов на основе кэша реализовано и протестировано, но в данный момент не включено в демо-версии; для активации переключите
createCacheClientвapp.ts.
Эталонная реализация аутентификации с нуля для Cloudflare Workers — хеширование паролей PBKDF2, JWT-сессии с двумя токенами, сравнение за константное время, скользящее истечение и подключаемый плагин наблюдаемости — всё собрано с Hono, Turso (с опциональным кэшированием Valkey/Redis) и строгим TypeScript.
Каждое проектное решение опирается на стандарт: NIST SP 800-63B для учётных данных, NIST SP 800-132 для вывода ключей, OWASP ASVS для верификации и RFC 8725 для лучших практик JWT.
Создаёте продукт? Используйте Better Auth — он покрывает OAuth, passkey, MFA, ограничение частоты запросов и многое другое из коробки с активной экосистемой плагинов. Этот репозиторий существует, чтобы научить вас как работает аутентификация, а не заменять production-библиотеку.
| Слой | Что делает |
|---|---|
| Хранение паролей | PBKDF2-SHA384 с 128-битными солями, дайджест целостности, контроль версий (password-service.ts) |
| Управление сессиями | Серверные сессии с отслеживанием устройств, скользящее истечение, ограничение максимум 3 на пользователя; опциональные сессии с кэшированием через Valkey/Redis (session-service.ts, cached-session-service.ts) |
| Смена пароля | Повторная верификация текущего пароля, полный перехеш PBKDF2, атомарный отзыв всех сессий (account-service.ts, ADR-004) |
| JWT с двумя токенами | Токен доступа на 15 мин + токен обновления на 7 дней, привязаны к сессии для отзыва (token-service.ts) |
| Middleware аутентификации | Автоматический поток обновления, явная привязка HS256, проверка утверждения typ (require-auth.ts) |
| Безопасные куки | HttpOnly, Secure, SameSite=Strict, Path=/ (cookie.ts) |
| Заголовки безопасности | HSTS, CSP, CORP/COEP/COOP, Permissions-Policy, удаление отпечатков (security.ts) |
| Валидация входных данных | Zod-схемы с NIST-совместимой политикой паролей (только длина, без правил сложности) |
| Ограничение частоты запросов | Фиксированное окно для защиты от атак перебором и подбором учётных данных: по IP на публичных маршрутах аутентификации (например, вход), по пользователю на защищённых действиях; без жёстких блокировок (согласно NIST) (ADR-006) |
| Плагин наблюдаемости | Структурированные события безопасности, адаптивные PoW-задачи, агент-аутентифицированное API /ops — подключается через middleware, удаляется удалением одного пакета (ADR-008) |
| Инструменты CLI | Go TUI (plctl) для запроса событий, управления сессиями и предоставления учётных данных агента через поверхность /ops (tools/cli/) |
| Тесты векторов атак | Подделка JWT, путаница алгоритмов, путаница типов, граничные случаи Unicode, проверки раскрытия информации |
Этот проект намеренно опускает функции, выходящие за рамки его образовательной цели. Если вы расширяете этот код в сторону продакшена (или оцениваете, что требуется для production-системы аутентификации), таблицы ниже группируют пробелы по уровням приоритета.
В большинстве реальных проектов используйте Better Auth вместо создания собственного решения.
| Функция | Почему это важно | Стандарт / Ссылка |
|---|---|---|
| Проверка скомпрометированных паролей | Предотвращает использование паролей, известных из публичных утечек | NIST SP 800-63B §5.1.1.2, HIBP API |