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:
@@ -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. Что сделано в коде (готово)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
## 1. PostgreSQL — установка
|
||||
|
||||
**Где:** на этой же ВМ, рядом с приложением.
|
||||
**Версия:** 16 (или любая 15+).
|
||||
**Версия:** 16 (на Ubuntu 22.04 — 14, на 24.04 — 16).
|
||||
**Безопасность:** слушает только localhost (наружу не торчит).
|
||||
|
||||
```bash
|
||||
|
||||
@@ -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 (массив):
|
||||
- `""`
|
||||
|
||||
Reference in New Issue
Block a user