59 lines
2.7 KiB
Markdown
59 lines
2.7 KiB
Markdown
|
||
### **Финальная архитектура в k8s:**
|
||
|
||
```mermaid
|
||
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
|
||
```
|
||
|
||
### **Правильный поток аутентификации:**
|
||
|
||
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)
|