Перейти к содержанию
Версия: 3.3.51 Обновлено: 2026-01-23

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

  1. User регистрируется через Supabase (Google/Email)
  2. Supabase возвращает access_token
  3. Frontend отправляет Supabase JWT на /api/auth/supabase/login
  4. Backend верифицирует JWT через JWKS
  5. Backend создаёт Saga JWT с user claims
  6. Frontend использует Saga JWT для API запросов

Связанная документация