Files
core/docs/auth
Untone 408749f34d
All checks were successful
Deploy on push / deploy (push) Successful in 10m8s
- 🚨 **Critical Fix**: Исправлена критическая ошибка OAuth маршрутизации - использование HTTP handlers вместо GraphQL функций
- 🔒 **OAuth X/Twitter**: Добавлены обязательные scope `tweet.read users.read`
- 🔒 **OAuth Yandex**: Добавлены scope `login:email login:info login:avatar`
- 🔒 **OAuth Telegram**: Добавлен недостающий access_token_url и scope
- 📚 **OAuth Documentation**: Обновлена документация для всех провайдеров с актуальными настройками и требованиями
2025-09-23 17:14:47 +03:00
..
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00
2025-09-22 00:56:36 +03:00

🔐 Система аутентификации Discours Core

📚 Обзор

Модульная система аутентификации с JWT токенами, Redis-сессиями, OAuth интеграцией и RBAC авторизацией. Поддерживает httpOnly cookies и Bearer токены для веб и API клиентов.

🚀 Быстрый старт

Для микросервисов

from auth.tokens.sessions import SessionTokenManager
from auth.utils import extract_token_from_request

# Проверка токена
sessions = SessionTokenManager()
token = await extract_token_from_request(request)
payload = await sessions.verify_session(token)

if payload:
    user_id = payload.get("user_id")
    print(f"Пользователь авторизован: {user_id}")

Redis ключи для поиска

# Сессии пользователей
session:{user_id}:{token}     # Данные сессии (hash)
user_sessions:{user_id}       # Список активных токенов (set)

# OAuth токены
oauth_access:{user_id}:{provider}   # Access токен
oauth_refresh:{user_id}:{provider}  # Refresh токен

📖 Документация

🏗️ Архитектура

🔑 Аутентификация

🛠️ Разработка

🔗 Связанные системы

  • RBAC System - Система ролей и разрешений
  • Security System - Управление паролями и email
  • Redis Schema - Схема данных и кеширование

🔍 Для микросервисов

Подключение к Redis

# Используйте тот же Redis connection pool
from storage.redis import redis

# Проверка сессии
async def check_user_session(token: str) -> dict | None:
    sessions = SessionTokenManager()
    return await sessions.verify_session(token)

# Массовая проверка токенов
from auth.tokens.batch import BatchTokenOperations
batch = BatchTokenOperations()
results = await batch.batch_validate_tokens(token_list)

HTTP заголовки

# Извлечение токена из запроса
from auth.utils import extract_token_from_request, get_safe_headers

token = await extract_token_from_request(request)

# Или вручную
headers = get_safe_headers(request)
token = headers.get("authorization", "").replace("Bearer ", "")

🎯 Основные компоненты

  • SessionTokenManager - JWT сессии с Redis хранением
  • OAuthTokenManager - OAuth access/refresh токены
  • BatchTokenOperations - Массовые операции с токенами
  • TokenMonitoring - Мониторинг и статистика
  • AuthMiddleware - HTTP middleware для автоматической обработки

Производительность

  • Connection pooling для Redis
  • Batch операции для массовых действий (100-1000 токенов)
  • Pipeline использование для атомарности
  • SCAN вместо KEYS для безопасности
  • TTL автоматическая очистка истекших токенов