Files
IPWhiteList/docs/questions.md
T

3.4 KiB
Raw Blame History

Вопросы для уточнения — IP WhiteList

Дата: 2026-05-30
Кому: команда Keycloak / Nubes
Статус: ждём ответов


1. Admin-роль: «отдельный чек-бокс»

ТЗ: Администратор = clientId = WZ01112 + отдельный чек-бокс.

Вопросы:

  • В каком claim приходит этот чек-бокс? (realm_role, client_role, group, attribute?)
  • Как точно называется claim? Примеры возможных значений:
    • "roles": ["whitelist-admin"]
    • "resource_access.whitelist.roles": ["admin"]
    • "is_admin": true
  • Нужна ли поддержка нескольких админов (не только WZ01112)?

Как обойти: захардкодить clientId === 'WZ01112' как признак админа, добавить TODO с ссылкой на этот файл.


2. Multi-company: формат claims

ТЗ: Пользователь может принадлежать нескольким компаниям, в UI — переключатель.

Вопросы:

  • clientID в токене — это строка или массив строк?
  • Если массив — как называется claim? (clientIDs, groups, что-то ещё?)
  • Есть ли claim с названием компании (для отображения в переключателе)?
  • Пример реального payload токена (без секретов) для пользователя с 2+ компаниями.

Как обойти: всегда считать clientId строкой (один клиент), переключатель не делать, добавить TODO.


3. IP-ограничение /export

ТЗ: Endpoint экспорта «на старте может работать без авторизации (по сетевому ограничению)».

Вопросы:

  • Ограничение делаем в приложении или на уровне ingress (nginx/traefik)?
  • Если в приложении — где взять список разрешённых IP? (env var, файл, БД?)
  • Если ingress — кто настраивает?

Как обойти: оставить /export открытым, добавить TODO.


4. Email пользователя

ТЗ: email — идентификация пользователя для аудита.

Вопросы:

  • Как называется claim с email? (email, preferred_username, что-то ещё?)
  • Всегда ли он присутствует в токене?

Как обойти: брать payload.email с fallback на payload.sub, добавить TODO.


5. DEV_MODE

Вопросы:

  • Нужен ли dev-режим на платформе Nubes (не локально)?
  • Или всегда только реальный Keycloak?

Как обойти: оставить DEV_MODE=true с проверкой что в production падает при включении.


Условные обозначения в коде

// TODO(Keycloak): уточнить формат claim — см. docs/questions.md#1
// FIXME(Keycloak): временно, заменить после ответа команды
// HACK(DEV_MODE): заглушка, убрать перед продакшеном