cleanup: убрать IP, реальные URL, креды из публичных файлов

- AGENT-GUIDE.md: убран IP ВМ, HTTP→HTTPS
- copilot-instructions.md: Files/token.txt→.env.example
- keycloak-auth-reference.md: убраны реальные client_id, URL gateway, email
- deploy-keycloak.md: реальные параметры заменены на шаблоны
- .env.example: русские значения→шаблоны
- README.md: порт 3000, multi-company пример под mock
This commit is contained in:
2026-06-03 13:10:48 +03:00
parent 43fa0faf7a
commit 2194c1650f
7 changed files with 27 additions and 40 deletions
+5 -5
View File
@@ -19,11 +19,11 @@ KC_BASE_URL=https://keycloak.nubes.ru/realms/cloud
# KC_BASE_URL=https://lk-api-gateway-test.ngcloud.ru/api/v1/iam/auth
# ── OAuth client (зарегистрированное приложение) ──
KC_CLIENT_ID=deck-test.ngcloud.ru
KC_CLIENT_SECRET=...
KC_CLIENT_ID=<ID клиента из Keycloak>
KC_CLIENT_SECRET=<секрет клиента>
# ── Публичный URL приложения (для редиректа из Keycloak) ──
APP_URL=https://white.nodejsk8s.dev.nubes.ru
APP_URL=https://<ваш-домен>
# ── JWKS URL для верификации токенов (если не через KC_BASE_URL) ──
# JWKS_URL=https://keycloak.nubes.ru/realms/cloud/protocol/openid-connect/certs
@@ -33,10 +33,10 @@ APP_URL=https://white.nodejsk8s.dev.nubes.ru
| Вопрос | Описание |
|---|---|
| **API Gateway?** | Токен получать напрямую из Keycloak или через `lk-api-gateway-test.ngcloud.ru`? |
| **API Gateway?** | Токен получать напрямую из Keycloak или через API Gateway? |
| **ClientID в токене** | Какой claim содержит ID компании? Сейчас ждём `ClientID` или `client_id`. |
| **Admin-роль** | Как определяется admin? `clientId === WZ01112` достаточно или нужен отдельный claim? |
| **Redirect URI** | Какой зарегистрирован? `https://white.nodejsk8s.dev.nubes.ru/callback`? |
| **Redirect URI** | Какой зарегистрирован? `https://<домен>/callback`? |
| **Несколько компаний** | `clientid` в токене приходит как одна строка или через запятую? |
### 3. Что сделано в коде (готово)
+1 -1
View File
@@ -22,7 +22,7 @@
## 1. PostgreSQL — установка
**Где:** на этой же ВМ, рядом с приложением.
**Версия:** 16 (или любая 15+).
**Версия:** 16 (на Ubuntu 22.04 — 14, на 24.04 — 16).
**Безопасность:** слушает только localhost (наружу не торчит).
```bash
+14 -27
View File
@@ -20,11 +20,7 @@ Realm: **`cloud`** на `keycloak.nubes.ru`
## 2. Зарегистрированное приложение (OAuth client)
| Параметр | Значение |
|---|---|
| `client_id` | `deck-test.ngcloud.ru` |
Источник: HAR-файл `Files/nubes_login.har` (в query-параметрах auth request).
`client_id` — выдаётся DevOps при регистрации приложения в Keycloak.
---
@@ -45,39 +41,30 @@ Realm: **`cloud`** на `keycloak.nubes.ru`
## 4. Получение токена через API Gateway (альтернативный путь)
Из HAR: код обменивается не напрямую в Keycloak, а через **API Gateway ngcloud**:
Если в инфраструктуре есть API Gateway, код обменивается не напрямую в Keycloak, а через него:
```
POST https://lk-api-gateway-test.ngcloud.ru/api/v1/iam/auth/token
POST <url API Gateway>/token
Content-Type: application/json
Body: {"code": "<authorization_code>"}
```
Ответ:
```json
{
"access_token": "...",
"refresh_token": "...",
"expires_in": 43200
}
```
---
## 5. JWT-токены
### 5.1. Токен из `Files/token.txt` (test-окружение)
### 5.1. Пример структуры JWT (deprecated)
| Поле | Значение |
|---|---|
| `iss` | `https://auth.k8s.ngcloud.ru` |
| `aud` | `backend` |
| `sub` | `tazetdinovn@gmail.com` |
| `name` | Наиль Тазетдинов |
| `email` | `tazetdinovn@gmail.com` |
| `expires_in` | 86400 (24ч) |
| `scope` | `openid` |
| `token_type` | `Bearer` |
```
iss: https://<issuer>/...
aud: <audience>
sub: <email>
name: <ФИО пользователя>
email: <email пользователя>
exp: <timestamp>
scope: openid
token_type: Bearer
```
Claims (массив):
- `""`