### **Финальная архитектура в k8s:** ```mermaid flowchart A["python-navigator-demo.127.0.0.1.sslip.io"] --> B["Единый Ingress + DexAuthenticator
(аутентификация)"] B --> C["Frontend Service"] B --> D["DexAuthenticator Service"] B --> E["Backend Service"] C --> F["Frontend Pods"] D --> G["DexAuthenticator Pods"] E --> H["Backend Pods"] H --> I["PostgreSQL Service"] classDef ingress fill:#e1f5fe classDef service fill:#f3e5f5 classDef pod fill:#e8f5e8 classDef database fill:#fff3e0 class A,B ingress class C,D,E service class F,G,H pod class I database ``` ### **Правильный поток аутентификации:** 1. Пользователь заходит на `https://python-navigator-demo.127.0.0.1.sslip.io` 2. DexAuthenticator проверяет аутентификацию 3. Если не аутентифицирован → редирект на Dex (HTTP 302) 4. Если не аутентифицирован в Dex → редирект на Blitz IdP (HTTP 302) 4. После аутентификации в Blitz IdP → возврат в Dex 4. После аутентификации в Dex → возврат в приложение 5. Frontend загружается с аутентификацией 6. Frontend делает запрос к `/api/user-info` 7. Backend получает JWT токен и валидирует его 8. Backend возвращает данные пользователя из PostgreSQL 9. Frontend отображает информацию о пользователе и доступные ресурсы ### **Для тестирования:** **Откройте браузер и перейдите на `https://python-navigator-demo.127.0.0.1.sslip.io`** Вас должно перенаправить на Dex для аутентификации. После входа вы увидите: - Информацию о пользователе (email, полное имя, организация) - Его роли (admin, developer, user, manager) - Доступные ресурсы на основе ролей ### **Тестовые пользователи:** Убедитесь, что в вашем Dex и внешнем IdP есть пользователи: - `admin@example.com` - полный доступ ко всем ресурсам - `developer@example.com` - технические ресурсы (CI/CD, Git, Docs, Wiki) - `user@example.com` - только база знаний - `manager@example.com` - управленческие ресурсы (Проекты, Отчеты, Wiki)