Authentication Module¶
Обзор¶
Модуль аутентификации обеспечивает безопасный доступ к платформе Saga через email-first подход с использованием Supabase Auth и JWT токенов.
Архитектура аутентификации¶
flowchart LR
A[User] -->|Google/Email| B[Supabase Auth]
B -->|Supabase JWT| C[Saga Backend]
C -->|Validate JWKS| D[Generate Saga JWT]
D -->|Saga JWT| E[API Access]
style B fill:#90EE90
style D fill:#FFD700
Основные компоненты¶
JWT System¶
- Типы токенов: AdminClaims, JWTClaims
- Генерация:
backend/auth/service/jwt_mvp.go - Валидация:
backend/shared/http/jwt_validator.go - Управление:
backend/auth/service/token_manager.go
Supabase Auth Integration¶
- Google OAuth (рекомендуемый)
- Email + Password регистрация
- Magic Links (passwordless)
- JWKS верификация токенов
Authorization¶
- Role-based access control (RBAC)
- Config-based admin emails (
config/auth.yaml) - Admin/User separation
Ключевые файлы¶
backend/auth/
├── service/
│ ├── jwt_mvp.go # JWT token generation
│ ├── token_manager.go # Claims management
│ └── supabase_handler.go # Supabase JWT verification
├── middleware/
│ ├── admin_auth_middleware.go # Admin authentication
│ └── auth_middleware.go # User authentication
└── repository/
└── auth_repository_core.go # Permissions storage
Security принципы¶
- Email MANDATORY: Email как единственный identifier пользователя
- No Web3 Complexity: Никаких wallet connections, подписей сообщений
- JWT с коротким временем жизни (24 часа)
- Config-based Admins: Админы определяются в config.yaml
- JWKS Verification: Supabase JWT проверяется через JWKS endpoint
- Audit logging всех auth операций
Authentication Flow¶
- User регистрируется через Supabase (Google/Email)
- Supabase возвращает access_token
- Frontend отправляет Supabase JWT на
/api/auth/supabase/login - Backend верифицирует JWT через JWKS
- Backend создаёт Saga JWT с user claims
- Frontend использует Saga JWT для API запросов
Связанная документация¶
- API Authentication — Полное руководство
- Authentication Flow — Detailed flow
- CLAUDE.md Security Principles