Files
core/docs/auth
Untone d87c0c522c
All checks were successful
Deploy on push / deploy (push) Successful in 9m43s
[0.9.22] - 2025-09-22
### Fixed
- 🔒 **OAuth Facebook**: Обновлена версия API с v13.0 до v18.0 (актуальная)
- 🔒 **OAuth Facebook**: Добавлены обязательные scope и параметры безопасности
- 🔒 **OAuth Facebook**: Улучшена обработка ошибок API и валидация ответов
- 🔒 **OAuth VK**: Обновлена версия API с v5.131 до v5.199+ (актуальная)
- 🔒 **OAuth VK**: Исправлен endpoint с `authors.get` на `users.get`
- 🔒 **OAuth GitHub**: Добавлены обязательные scope `read:user user:email`
- 🔒 **OAuth GitHub**: Улучшена обработка ошибок и получения email адресов
- 🔒 **OAuth Google**: Добавлены обязательные scope для OpenID Connect
- 🔒 **OAuth X/Twitter**: Исправлен endpoint с `authors/me` на `users/me`
- 🔒 **Session Cookies**: Автоматическое определение HTTPS через переменную окружения HTTPS_ENABLED
- 🏷️ **Type Safety**: Исправлена ошибка в OAuth регистрации провайдеров
2025-09-22 23:56:04 +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 23:56:04 +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 автоматическая очистка истекших токенов