feat(auth): Phase 1b — swap default Keycloak realm на altum

Frontend default: https://auth.nstart.space/realms/nstarthttps://altum.nstart.cloud/auth/realms/altum. Shared SSO с altum portal.

Keycloak setup (Keycloak admin actions требуются ДО merge):
- В realm `altum` создать client `ordinis` (тип: public, standard flow)
- Redirect URIs:
    https://ordinis.nstart.cloud/*
    https://ordinis.k8s.265.nstart.cloud/*
    http://localhost:5173/*
- Web origins: те же
- Client-roles: ordinis-public, ordinis-internal, ordinis-restricted,
  admin (admin даёт RESTRICTED через ScopeContext.isAdminRole)

Backend issuerUri меняется отдельным MR в ordinis-infra
(charts/ordinis/values.yaml).

После настройки Keycloak + деплоя — старый realm auth.nstart.space/nstart
больше не используется. Все юзеры должны иметь учётки в realm altum
(вероятно brokered к nstart-id если SSO с New Start ID настроен).

171/171 tests, TSC чистый.
This commit is contained in:
Zimin A.N.
2026-05-26 13:11:49 +03:00
parent 6e5e64d558
commit da0f894342
+10 -5
View File
@@ -7,12 +7,17 @@ import Keycloak from 'keycloak-js'
* бесконечную петлю POST /token когда refresh_token истекал, см.
* MR !269 revert).
*
* <p>Default URL = `auth.nstart.space/realms/nstart/clients/ordinis`
* текущий ordinis realm. Phase 2 (отдельный эпик) — миграция на
* `altum.nstart.cloud/auth/realms/altum` если решим SSO с altum.
* <p>Default → altum realm (`altum.nstart.cloud/auth/realms/altum`)
* shared SSO с altum portal. Старый `auth.nstart.space/realms/nstart`
* deprecated, использовать нельзя. В Keycloak realm `altum` должен быть
* client `ordinis` с redirect URI:
* - `https://ordinis.nstart.cloud/*` (prod)
* - `https://ordinis.k8s.265.nstart.cloud/*` (staging)
* - `http://localhost:5173/*` (dev)
* Также web-origins для CORS на silentCheckSsoRedirectUri.
*/
const KC_URL = import.meta.env.VITE_KEYCLOAK_URL ?? 'https://auth.nstart.space'
const KC_REALM = import.meta.env.VITE_KEYCLOAK_REALM ?? 'nstart'
const KC_URL = import.meta.env.VITE_KEYCLOAK_URL ?? 'https://altum.nstart.cloud/auth'
const KC_REALM = import.meta.env.VITE_KEYCLOAK_REALM ?? 'altum'
const KC_CLIENT_ID = import.meta.env.VITE_KEYCLOAK_CLIENT_ID ?? 'ordinis'
let _kc: Keycloak | null = null