2.7 KiB
2.7 KiB
Финальная архитектура в k8s:
flowchart
A["python-navigator-demo.127.0.0.1.sslip.io"] --> B["Единый Ingress + DexAuthenticator<br/>(аутентификация)"]
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
Правильный поток аутентификации:
- Пользователь заходит на
https://python-navigator-demo.127.0.0.1.sslip.io - DexAuthenticator проверяет аутентификацию
- Если не аутентифицирован → редирект на Dex (HTTP 302)
- Если не аутентифицирован в Dex → редирект на Blitz IdP (HTTP 302)
- После аутентификации в Blitz IdP → возврат в Dex
- После аутентификации в Dex → возврат в приложение
- Frontend загружается с аутентификацией
- Frontend делает запрос к
/api/user-info - Backend получает JWT токен и валидирует его
- Backend возвращает данные пользователя из PostgreSQL
- 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)