Skip to main content
Architecture11 min read

Аутентификация сложнее, чем вы думаете

Я реализовывал аутентификацию 4 раза в разных проектах. Каждый раз думал, что это займет 2 дня. Каждый раз уходило 2 недели. Вот почему и что я сделал бы иначе.

Part ofCloud & Infrastructure->
By Jason TeixeiraDecember 28, 2025
AuthenticationSecuritySupabaseJWTArchitecture
Share:
On this page

В каждом моём плане проекта есть пункт: «Аутентификация — 2 дня».

В каждом ретроспективе проекта есть заметка: «Аутентификация заняла 2 недели».

Я создавал системы аутентификации 4 раза. Каждый раз я недооцениваю её. Вот почему и что я в итоге понял.

Айсберг

Что вы думаете об аутентификации:

  • Форма входа
  • Сохранить токен
  • Проверить, действителен ли токен
  • Готово

Что такое аутентификация на самом деле:

  • Форма входа (email/пароль + OAuth + magic ссылки + MFA?)
  • Хеширование паролей (bcrypt, argon2, какой фактор стоимости?)
  • Управление сессиями (JWT vs куки сессии vs оба?)
  • Обновление токена (тихое обновление, ротация, отзыв)
  • Защита от CSRF (same-site куки, double-submit токен)
  • Ограничение скорости (на вход, на регистрацию, на сброс пароля)
  • Процесс сброса пароля (генерация токена, срок действия, одноразовое использование)
  • Подтверждение email (токен, логика повторной отправки, что если email изменён?)
  • Блокировка учётной записи (сколько попыток? Какой процесс разблокировки?)
  • Управление доступом на основе ролей (администратор vs пользователь vs модератор)
  • Управление API-ключами (для программного доступа)
  • Аннулирование сессии при смене пароля
  • «Запомнить меня» vs «только эта сессия»
  • Уведомление о входе с нового устройства
  • Аудит логов (кто вошёл, когда, откуда)

Это 15+ функций. По 1-2 дня на каждую — получается месяц.

Что я делаю сейчас: Использую Supabase Auth и расширяю

После того как я дважды создавал собственную аутентификацию и оба раза ненавидел свою жизнь, я теперь начинаю с Supabase Auth (или Clerk, или Auth.js). Она обрабатывает:

  • Email/пароль с bcrypt
  • OAuth провайдеры (Google, GitHub, Discord)
  • JWT токены с обновлением
  • Подтверждение email
  • Сброс пароля
  • Управление сессиями
  • Ограничение скорости

Это 80% аутентификации, за которую отвечают люди, думающие об аутентификации полный рабочий день. Я сосредотачиваюсь на 20%, которые специфичны для моего приложения:

\\

Reader route

article -> proof -> offer

ReadClusterProofScope

cluster

Cloud & Infrastructure

intent

Architecture

route

next step

What to do with this

Turn the note into a build path.

If this topic maps to a real business problem, keep reading the cluster, study the academy path, or route the work into a scoped engagement.

Jason Teixeira
Written by
Jason Teixeira
Founder, Sage Ideas Studio · Principal Engineer
livebuild 5d6c8652026-08-05 06:00Z
// solo studio// no analytics resold// every commit human-reviewed