Files
voidea/template/docs/decisions/02-auth.md
T

60 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Выбор схемы аутентификации
---
## Decision Tree
```mermaid
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, не больше)