From fb17c83e607dcd7cdc35cead700c96a2ee9ef3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 17 Jun 2026 14:30:59 +0400 Subject: [PATCH] =?UTF-8?q?v0.5.154:=20fix=20=D0=BF=D1=80=D0=B8=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D0=B5=D1=82=20IAM=5FAPI=5FURL,=20docs/IAM-EN?= =?UTF-8?q?V.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/IAM-ENV.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- src/config.js | 4 +-- 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 docs/IAM-ENV.md diff --git a/docs/IAM-ENV.md b/docs/IAM-ENV.md new file mode 100644 index 0000000..c5e2e74 --- /dev/null +++ b/docs/IAM-ENV.md @@ -0,0 +1,65 @@ +# IAM — переменные окружения + +> Дата: 2026-06-17 +> Путь: `src/config.js`, `v2/src/config/index.js` + +## IAM_API_URL (основная, приоритет выше) + +**Где используется:** `src/config.js` → `src/auth.js` (fetchIamUser, switchProfile) + +**Формат:** `https://auth-api.ngcloud.ru` (без /api/v1) + +Код добавляет `/api/v1/auth/user` автоматически. + +**Назначение:** получение профилей пользователя, переключение компании. + +**Дефолт:** `https://auth-api.ngcloud.ru` + +**Пример:** +- IAM_API_URL=https://auth-api.ngcloud.ru +- Фактический путь: https://auth-api.ngcloud.ru/api/v1/auth/user + +## IAM_API_BASE (запасная, приоритет ниже) + +**Где используется:** `v2/src/config/index.js` → `v2/server.js` (тестовые страницы) + +**Формат:** `https://lk-api-gateway.ngcloud.ru/api/v1/iam` + +Код НЕ добавляет /api/v1, путь должен быть полный. + +**Назначение:** тестовые страницы (/v2/iam-gateway-test), заглушка пока IAM не починят. + +**Дефолт:** берётся из IAM_API_URL + +**Пример:** +- IAM_API_BASE=https://lk-api-gateway.ngcloud.ru/api/v1/iam +- Фактический путь: https://lk-api-gateway.ngcloud.ru/api/v1/iam/auth/user + +## Приоритет в src/config.js + +``` +process.env.IAM_API_URL || process.env.IAM_API_BASE || 'https://auth-api.ngcloud.ru' +``` + +1. IAM_API_URL — явно задан (auth-api) +2. IAM_API_BASE — запасной (lk-api-gateway) +3. Дефолт — auth-api.ngcloud.ru + +## Когда что использовать + +| Ситуация | Какая переменная | Какой API | +|----------|-----------------|-----------| +| Обычная работа (логин, CRUD, компании) | IAM_API_URL | auth-api.ngcloud.ru | +| Имперсонация (админ работает от имени юзера) | IAM_API_BASE | lk-api-gateway.ngcloud.ru | +| Когда IAM починят | IAM_API_URL | auth-api.ngcloud.ru (везде) | + +## Текущий статус + +- auth-api.ngcloud.ru — не отдаёт profiles таргета при имперсонации (баг разработчиков IAM) +- lk-api-gateway.ngcloud.ru — работает, отдаёт profiles таргета, НО не принимает токен от Keycloak whitelist (только от ЛК) +- Когда IAM починят: удалить IAM_API_BASE из кода и Nubes UI, оставить только IAM_API_URL + +## Nubes UI (текущие переменные) + +- IAM_API_URL=https://auth-api.ngcloud.ru +- IAM_API_BASE=https://lk-api-gateway.ngcloud.ru/api/v1/iam diff --git a/package.json b/package.json index 5b6693b..1216cac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.153", + "version": "0.5.154", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/src/config.js b/src/config.js index f1689ce..eb7599a 100644 --- a/src/config.js +++ b/src/config.js @@ -13,7 +13,7 @@ // ── IAM API ─────────────────────────────────────────────────────────────────── // URL IAM-сервиса для получения профилей пользователя (GET /api/v1/auth/user) // и переключения активной компании (POST /api/v1/user/switch-profile). -const IAM_API_URL = (process.env.IAM_API_BASE || process.env.IAM_API_URL || 'https://auth-api.ngcloud.ru').replace(/\/$/, ''); +const IAM_API_URL = (process.env.IAM_API_URL || process.env.IAM_API_BASE || 'https://auth-api.ngcloud.ru').replace(/\/$/, ''); // ── Мок-пользователи (только dev/staging) ───────────────────────────────────── // В продакшене этот список не используется — вход через Keycloak. @@ -94,4 +94,4 @@ function backUrl(isAdmin, companyId, extra = {}) { // Передаётся в шаблоны через app.locals чтобы отображаться в UI. const { version: APP_VERSION } = require('../package.json'); -module.exports = { MOCK_USERS, backUrl, APP_VERSION, IAM_API_URL: (process.env.IAM_API_BASE || process.env.IAM_API_URL || 'https://auth-api.ngcloud.ru').replace(/\/$/, '') }; +module.exports = { MOCK_USERS, backUrl, APP_VERSION, IAM_API_URL: (process.env.IAM_API_URL || process.env.IAM_API_BASE || 'https://auth-api.ngcloud.ru').replace(/\/$/, '') };