diff --git a/FINAL_STATUS.md b/FINAL_STATUS.md
deleted file mode 100644
index 6cb36ce..0000000
--- a/FINAL_STATUS.md
+++ /dev/null
@@ -1,58 +0,0 @@
-
-### **Финальная архитектура в 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)
diff --git a/FINAL_STATUS.pdf b/FINAL_STATUS.pdf
deleted file mode 100644
index 4d768f8..0000000
Binary files a/FINAL_STATUS.pdf and /dev/null differ
diff --git a/README.md b/README.md
index 27dcb7e..73034af 100644
--- a/README.md
+++ b/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
(аутентификация)"]
+
+ 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 отображает полученные данные
## Разработка
diff --git a/README.pdf b/README.pdf
new file mode 100644
index 0000000..64f0a84
Binary files /dev/null and b/README.pdf differ
diff --git a/sequenceDiagram.md b/sequenceDiagram.md
new file mode 100644
index 0000000..b87df27
--- /dev/null
+++ b/sequenceDiagram.md
@@ -0,0 +1,85 @@
+# Диаграмма последовательности аутентификации
+
+```mermaid
+sequenceDiagram
+ participant User as Пользователь
+ participant Browser as Браузер
+ participant Ingress as Nginx Ingress
+ participant DexAuth as DexAuthenticator
(OAuth2 Proxy)
+ participant Frontend as Frontend
(React SPA)
+ participant Backend as Backend
(FastAPI)
+ participant Dex as Dex
(Proxy IdP)
+ participant BlitzIdP as Blitz IdP
(Основной IdP)
+ participant LDAP as LDAP
(Резервный IdP)
+ participant PostgreSQL as PostgreSQL
+
+ Note over User, PostgreSQL: Процесс аутентификации пользователя
+
+ %% Пользователь обращается к приложению
+ User->>Browser: 1. Открывает python-navigator-demo.127.0.0.1.sslip.io
+ Browser->>Ingress: 2. HTTPS запрос к приложению
+ Ingress->>DexAuth: 3. Проверка аутентификации через auth-url
+
+ alt Сессия не найдена или истекла
+ DexAuth->>DexAuth: 4. Проверка session cookie
+ DexAuth->>Dex: 5. Перенаправление на аутентификацию (HTTP 302)
+ Dex->>BlitzIdP: 6. Запрос аутентификации
+
+ alt Blitz IdP недоступен
+ Dex->>LDAP: 7a. Переключение на резервный IdP
+ LDAP-->>Dex: 7b. Ответ от LDAP
+ else Blitz IdP доступен
+ BlitzIdP-->>Dex: 7c. Ответ от Blitz IdP
+ end
+
+ Dex-->>DexAuth: 8. Возврат токенов (access_token, refresh_token)
+ DexAuth->>DexAuth: 9. Сохранение токенов в сессии
+ DexAuth-->>Ingress: 10. Установка заголовков (X-Auth-Request-User, X-Auth-Request-Email, Authorization)
+ end
+
+ Ingress->>Frontend: 11. Перенаправление на Frontend с заголовками
+ Frontend-->>Browser: 12. Загрузка React приложения
+ Browser-->>User: 13. Отображение приложения
+
+ Note over User, PostgreSQL: Взаимодействие с Backend через API
+
+ %% Пользователь взаимодействует с приложением
+ User->>Browser: 14. Взаимодействие с интерфейсом
+ Browser->>Frontend: 15. Клик/действие пользователя
+ Frontend->>Ingress: 16. API запрос к /api/user-info
+
+ Ingress->>DexAuth: 17. Проверка аутентификации для API
+ DexAuth->>DexAuth: 18. Проверка session cookie
+ DexAuth->>DexAuth: 19. Извлечение токенов из сессии
+
+ alt Токен истек
+ DexAuth->>Dex: 20. Обновление access token через refresh_token
+ Dex->>BlitzIdP: 21. Обновление через основной IdP
+
+ alt Blitz IdP недоступен
+ Dex->>LDAP: 22a. Обновление через LDAP
+ LDAP-->>Dex: 22b. Новый токен от LDAP
+ else Blitz IdP доступен
+ BlitzIdP-->>Dex: 22c. Новый токен от Blitz IdP
+ end
+
+ Dex-->>DexAuth: 23. Новый access token
+ DexAuth->>DexAuth: 24. Обновление сессии
+ end
+
+ DexAuth-->>Ingress: 25. Установка заголовков (Authorization: Bearer JWT)
+ Ingress->>Backend: 26. Проксирование запроса с Authorization header
+
+ Backend->>Backend: 27. Валидация JWT токена через Dex JWKS
+ Backend->>Backend: 28. Извлечение email из токена
+ Backend->>PostgreSQL: 29. Запрос данных пользователя
+ PostgreSQL-->>Backend: 30. Данные пользователя (роли, организация, ссылки)
+ Backend-->>Ingress: 31. JSON ответ с данными пользователя
+ Ingress-->>Frontend: 32. Ответ с данными
+ Frontend-->>Browser: 33. Обновление интерфейса
+ Browser-->>User: 34. Отображение информации о пользователе
+
+ Note over User, PostgreSQL: Преимущества архитектуры
+
+ Note right of DexAuth: ✅ SPA не хранит токены
✅ Автоматическое обновление токенов
✅ Безопасность на уровне инфраструктуры
✅ Прозрачность для приложения
✅ JWT валидация на Backend
✅ Ролевая модель в PostgreSQL
+```
diff --git a/sequenceDiagram.png b/sequenceDiagram.png
new file mode 100644
index 0000000..170539c
Binary files /dev/null and b/sequenceDiagram.png differ