Files

2.1 KiB
Raw Permalink Blame History

Выбор схемы аутентификации


Decision Tree

graph TD
    A[Схема auth?] --> B{Нужен вход через соцсети?}
    B -->|Нет| C[Email + пароль]
    B -->|Да| D{OAuth2}
    D --> E[Выбрать провайдеров]
    C --> F[Выбрать JWT или Session]
    F -->|SPA/PWA| G[JWT + refresh token]
    F -->|SSR| H[Session + cookie]

Варианты

Email + пароль

Плюсы Простота, не зависит от third-party, полный контроль
Минусы Пользователь должен помнить пароль, риск утечки
Хэширование bcrypt через passlib

OAuth2 (Яндекс, Google, GitHub, Apple)

Плюсы Удобство для пользователя, нет паролей на нашей стороне
Минусы Зависимость от провайдера, нужны client_id/secret, нужен публичный URL для callback
Схема Один пользователь = один провайдер (нельзя привязать два)

JWT vs Session

JWT Session
Хранение На клиенте (localStorage) На сервере (Redis/БД)
Масштабирование Не нужна общая session storage Нужен Redis
Отзыв токена Сложно (до expire) Мгновенно
SPA/PWA Идеально Сложнее

Рекомендация

Email + пароль + JWT для старта. OAuth2 добавить перед production (если нужен). JWT с refresh token для SPA/PWA, session для SSR.


[ASK]

  • Нужен ли вход через соцсети? (рекомендация: Яндекс для РФ, Google для международных)
  • JWT или Session? (рекомендация: JWT + refresh token)
  • Сколько провайдеров OAuth? (рекомендация: 1-2, не больше)