Модуль passport/auth (SSO-аутентификация)

Модуль отвечает за аутентификацию через внешний сервис Passport (OAuth2/SSO). Он обеспечивает: инициацию входа, обработку callback, выдачу токенов в httpOnly-куки, верификацию JWT на каждый запрос, автоматическое обновление токенов и выход (proxy на Passport).

Документы модуля

ДокументСодержание
architecture.mdСлои модуля, ключевые классы, DI
flow.mdПолный SSO-поток: login → callback → refresh → logout
dto.mdPassportTokenDto, PassportUserDto
security.mdMiddleware: валидация JWT, куки, public_routes
configuration.mdПараметры модуля, env, что захардкожено

Краткая суть

Пользователь → GET /auth/login → редирект на Passport
   → Passport авторизует → callback ?code=&state=
   → API обменивает code на токены (PassportHttpClient)
   → синхронизирует пользователя (SyncUserHandler ядра)
   → кладёт токены в httpOnly-куки
   → редирект на фронтенд

Каждый защищённый запрос:
   PassportAuthMiddleware: валидирует JWT (RS256) → устанавливает YiiIdentity
   при истечении: отрабатывает refresh автоматически

Структура модуля

modules/passport/auth/
├── Module.php
├── application/
│   ├── command/        # InitiateSsoLoginCommand, HandleSsoCallbackCommand
│   ├── dto/            # PassportTokenDto, PassportUserDto
│   ├── handler/        # InitiateSsoLoginHandler, HandleSsoCallbackHandler
│   └── port/           # PassportAuthPort (порт)
├── config/
│   ├── di.php          # регистрация HTTP-клиента, обработчиков, middleware
│   ├── params.php      # URL-адреса, OAuth, куки, скоупы, public routes
│   └── routing.php     # /auth/login, /auth/callback, /auth/logout
├── infrastructure/
│   └── http/
│       └── PassportHttpClient.php   # HTTP-реализация порта
└── presentation/
    ├── controller/AuthController.php
    ├── middleware/PassportAuthMiddleware.php
    └── view/{layout,login}          # HTML-страницы редиректов

Ключевые классы

КлассРоль
AuthControllerHTTP-эндпоинты /auth/login, /auth/callback, /auth/logout
PassportAuthMiddlewareПроверка/валидация JWT на каждый запрос, refresh, установка YiiIdentity
PassportAuthPortПорт (интерфейс интеграции)
PassportHttpClientРеализация порта: authorization URL, token exchange, refresh, getUser, logout
InitiateSsoLoginHandlerСтроит URL авторизации Passport по state
HandleSsoCallbackHandlerОбменивает code → токены, синхронизирует пользователя

Взаимодействие с ядром

Подробности: flow.md, security.md, configuration.md.