add sequenceDiagram
This commit is contained in:
62
README.md
62
README.md
@@ -12,6 +12,27 @@
|
||||
- **PostgreSQL**: Хранит пользователей, роли и доступные ссылки
|
||||
- **DexAuthenticator**: Обеспечивает аутентификацию через Dex
|
||||
|
||||
## Работа приложения
|
||||
|
||||
1. Пользователь открывает `https://python-navigator-demo.127.0.0.1.sslip.io`
|
||||
2. Ingress перенаправляет на DexAuthenticator для аутентификации
|
||||
3. Если не аутентифицирован происходит редирект на Dex (HTTP 302) для входа
|
||||
4. Если не аутентифицирован в Dex происходит редирект на Blitz IdP (HTTP 302) для входа
|
||||
5. После аутентификации в Blitz IdP → возврат в Dex
|
||||
6. После успешной аутентификации Dex возвращает токен в DexAuthenticator
|
||||
7. DexAuthenticator устанавливает заголовки (`X-Auth-Request-Email`,`X-Auth-Request-User`, `Authorization`) и cookie
|
||||
8. После успешной аутентификации Frontend загружается
|
||||
9. Frontend делает запрос к `/api/user-info`
|
||||
10. DexAuthenticator устанавливает заголовки (`X-Auth-Request-Email`,`X-Auth-Request-User`, `Authorization`) и cookie
|
||||
11. Backend:
|
||||
- Валидирует JWT токен из заголовка `Authorization`
|
||||
- Извлекает email/id пользователя
|
||||
- Получает данные из PostgreSQL
|
||||
- Возвращает информацию о пользователе и доступных ресурсах
|
||||
12. Frontend отображает информацию о пользователе и доступные ресурсы
|
||||
|
||||

|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
@@ -63,6 +84,33 @@ make deploy
|
||||
|
||||
Приложение будет доступно по адресу: `https://python-navigator-demo.127.0.0.1.sslip.io`
|
||||
|
||||
#### Финальная архитектура в Kubernetes:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### 3. Удаление приложения
|
||||
|
||||
```bash
|
||||
@@ -176,20 +224,6 @@ make clean
|
||||
- `sendAuthorizationHeader` - Отправка заголовка Authorization с JWT
|
||||
- `keepUsersLoggedInFor` - Время сессии (24h)
|
||||
|
||||
## Работа приложения
|
||||
|
||||
1. Пользователь открывает `https://python-navigator-demo.127.0.0.1.sslip.io`
|
||||
2. Ingress перенаправляет на DexAuthenticator для аутентификации
|
||||
3. DexAuthenticator редиректит на Dex для входа
|
||||
4. После успешной аутентификации Dex возвращает токен
|
||||
5. DexAuthenticator устанавливает заголовки (`X-Auth-Request-Email`,`X-Auth-Request-User`, `Authorization`)
|
||||
6. Frontend загружается и делает запрос к `/api/user-info`
|
||||
7. Backend:
|
||||
- Валидирует JWT токен
|
||||
- Извлекает email пользователя
|
||||
- Получает данные из PostgreSQL
|
||||
- Возвращает информацию о пользователе и доступных ресурсах
|
||||
8. Frontend отображает полученные данные
|
||||
|
||||
## Разработка
|
||||
|
||||
|
||||
Reference in New Issue
Block a user