diff --git a/docs-internal/keycloak-admin-setup.md b/docs-internal/keycloak-admin-setup.md index a490fb6..7517de6 100644 --- a/docs-internal/keycloak-admin-setup.md +++ b/docs-internal/keycloak-admin-setup.md @@ -82,7 +82,7 @@ env: - name: ORDINIS_KEYCLOAK_ADMIN_ENABLED value: "true" - name: ORDINIS_KEYCLOAK_ADMIN_URL - value: "https://auth.nstart.space" # both envs use the same Keycloak + value: "https://altum.nstart.cloud/auth" # both envs use the same Keycloak - name: ORDINIS_KEYCLOAK_ADMIN_REALM value: "nstart" # CLIENT_ID + CLIENT_SECRET arrive via the vault-injected @@ -94,7 +94,7 @@ env: After redeploy, check the pod log on startup: ``` -KeycloakAdminUserResolver active — base=https://auth.nstart.space realm=nstart client=ordinis-admin-client +KeycloakAdminUserResolver active — base=https://altum.nstart.cloud/auth realm=nstart client=ordinis-admin-client ``` End-to-end: diff --git a/docs-internal/ops/README.md b/docs-internal/ops/README.md index e9e236e..83208ed 100644 --- a/docs-internal/ops/README.md +++ b/docs-internal/ops/README.md @@ -29,7 +29,7 @@ echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq # проверить exp, iss, realm_access.roles # 3. Issuer правильный? -# должен быть https://auth.nstart.space/realms/nstart +# должен быть https://altum.nstart.cloud/auth/realms/altum ``` Если JWT прошёл проверку, но 401 — backend логи: diff --git a/docs-internal/tech/api-integration.md b/docs-internal/tech/api-integration.md index 4f056fa..b558739 100644 --- a/docs-internal/tech/api-integration.md +++ b/docs-internal/tech/api-integration.md @@ -31,9 +31,9 @@ openapi-generator-cli generate \ ## 3. Авторизация -Ordinis принимает JWT от Keycloak realm `nstart`: +Ordinis принимает JWT от Keycloak realm `altum`: -- Issuer: `https://auth.nstart.space/realms/nstart` +- Issuer: `https://altum.nstart.cloud/auth/realms/altum` - Алгоритм: RS256 - JWK Set discoverится через `/.well-known/openid-configuration`. @@ -42,14 +42,14 @@ Ordinis принимает JWT от Keycloak realm `nstart`: Для интеграции backend↔backend (например altum-backend → ordinis read-api) получить service account клиент в Keycloak: -1. Запросить у Ordinis team создание клиента в realm `nstart`. +1. Запросить у Ordinis team создание клиента в realm `altum`. 2. Назначить роль `ordinis-public` (или выше, если нужен RESTRICTED scope). 3. Получить `client_id` + `client_secret`. **Получение access token (client_credentials):** ```bash -curl -X POST https://auth.nstart.space/realms/nstart/protocol/openid-connect/token \ +curl -X POST https://altum.nstart.cloud/auth/realms/altum/protocol/openid-connect/token \ -d "grant_type=client_credentials" \ -d "client_id=altum-backend" \ -d "client_secret=" diff --git a/docs/integration/altum-imaging-order.md b/docs/integration/altum-imaging-order.md index 2f4485d..728052a 100644 --- a/docs/integration/altum-imaging-order.md +++ b/docs/integration/altum-imaging-order.md @@ -25,7 +25,7 @@ instrument / processing_level / data_format пока отсутствуют в **Авторизация:** - На staging пока выключена (`ORDINIS_AUTH_REQUIRED=false`), на prod включится. -- Header `Authorization: Bearer ` от Keycloak (`auth.nstart.space/realms/nstart`). +- Header `Authorization: Bearer ` от Keycloak (`altum.nstart.cloud/auth/realms/altum`). - Альтум использует **service account (m2m client)** в реалме `nstart`, роль `ordinis-public`. JWT issued через `client_credentials` flow, рефрешится в altum-backend перед TTL. @@ -222,7 +222,7 @@ allowlist: - [ ] Сидинг 4 справочников (`mission`, `instrument`, `processing_level`, `data_format`) согласно §3 в bundle `cuod`. Отдельный changelog для добавления схем + начальные записи. -- [ ] Service account `altum-backend` в Keycloak realm `nstart` с ролью +- [ ] Service account `altum-backend` в Keycloak realm `altum` с ролью `ordinis-public`. Передать `ORDINIS_CLIENT_ID` / `ORDINIS_CLIENT_SECRET` команде Альтума. - [ ] CORS allowlist для отладочных доменов Альтума на ingress. diff --git a/docs/integration/api-cheatsheet.md b/docs/integration/api-cheatsheet.md index 64f5481..ecd7e71 100644 --- a/docs/integration/api-cheatsheet.md +++ b/docs/integration/api-cheatsheet.md @@ -10,7 +10,7 @@ ```bash # client_credentials (для service-to-service интеграторов) -TOKEN=$(curl -s -X POST https://auth.nstart.space/realms/nstart/protocol/openid-connect/token \ +TOKEN=$(curl -s -X POST https://altum.nstart.cloud/auth/realms/altum/protocol/openid-connect/token \ -d grant_type=client_credentials \ -d client_id=$KC_CLIENT_ID -d client_secret=$KC_CLIENT_SECRET | jq -r .access_token) diff --git a/docs/integration/api-quickstart.md b/docs/integration/api-quickstart.md index 6850a16..ede43ae 100644 --- a/docs/integration/api-quickstart.md +++ b/docs/integration/api-quickstart.md @@ -53,7 +53,7 @@ Mutations, INTERNAL/RESTRICTED data, workflow и `/me/*` требуют JWT. ```bash TOKEN=$(curl -s -X POST \ - "https://auth.nstart.space/realms/nstart/protocol/openid-connect/token" \ + "https://altum.nstart.cloud/auth/realms/altum/protocol/openid-connect/token" \ -d "client_id=ordinis" \ -d "grant_type=password" \ -d "username=user@example.com" \ @@ -604,7 +604,7 @@ DictionaryDetail detail = mapper.readValue(resp.body(), DictionaryDetail.class); ```bash # client_credentials (для service-to-service интеграторов) -TOKEN=$(curl -s -X POST https://auth.nstart.space/realms/nstart/protocol/openid-connect/token \ +TOKEN=$(curl -s -X POST https://altum.nstart.cloud/auth/realms/altum/protocol/openid-connect/token \ -d grant_type=client_credentials \ -d client_id=$KC_CLIENT_ID -d client_secret=$KC_CLIENT_SECRET | jq -r .access_token) diff --git a/docs/integration/api/auth.md b/docs/integration/api/auth.md index 8c85189..fca61a1 100644 --- a/docs/integration/api/auth.md +++ b/docs/integration/api/auth.md @@ -1,8 +1,8 @@ # Авторизация -Ordinis принимает JWT от Keycloak realm `nstart`: +Ordinis принимает JWT от Keycloak realm `altum`: -- **Issuer:** `https://auth.nstart.space/realms/nstart` +- **Issuer:** `https://altum.nstart.cloud/auth/realms/altum` - **Алгоритм:** RS256 - **JWK Set discoverится** через `/.well-known/openid-configuration` @@ -10,7 +10,7 @@ Ordinis принимает JWT от Keycloak realm `nstart`: Для backend-to-backend интеграции (типичный сценарий): -1. Запросить у Ordinis team создание клиента в realm `nstart`. +1. Запросить у Ordinis team создание клиента в realm `altum`. 2. Назначить role: `ordinis-public` / `ordinis-internal` / `ordinis-restricted` (по нужному scope, см. ниже). 3. Получить `client_id` + `client_secret`. Хранить в Vault либо secret manager, @@ -19,7 +19,7 @@ Ordinis принимает JWT от Keycloak realm `nstart`: ## Получение access token ```bash -curl -X POST https://auth.nstart.space/realms/nstart/protocol/openid-connect/token \ +curl -X POST https://altum.nstart.cloud/auth/realms/altum/protocol/openid-connect/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=altum-backend" \ @@ -91,7 +91,7 @@ m2m flow без user session. Получай новый access token при ис | Среда | Issuer | Realm | |---|---|---| -| prod | `https://auth.nstart.space/realms/nstart` | `nstart` | +| prod | `https://altum.nstart.cloud/auth/realms/altum` | `nstart` | | staging | same | same | | local | same либо local Keycloak (опц) | same | @@ -105,7 +105,7 @@ m2m flow без user session. Получай новый access token при ис | 401 на каждый запрос | Token expired | Refresh с TTL buffer | | 401 на новый token | Invalid client_secret | Re-fetch у Ordinis team | | 403 на конкретные dictionaries | Scope mismatch | Запросить upgrade role у Ordinis team | -| 500 от Ordinis | Issuer unreachable / JWK fetch fail | Check `auth.nstart.space` health | +| 500 от Ordinis | Issuer unreachable / JWK fetch fail | Check `altum.nstart.cloud/auth` health | ## Дальше diff --git a/ordinis-auth/src/main/java/cloud/nstart/terravault/ordinis/auth/OrdinisAuthProperties.java b/ordinis-auth/src/main/java/cloud/nstart/terravault/ordinis/auth/OrdinisAuthProperties.java index 0baa886..9a46609 100644 --- a/ordinis-auth/src/main/java/cloud/nstart/terravault/ordinis/auth/OrdinisAuthProperties.java +++ b/ordinis-auth/src/main/java/cloud/nstart/terravault/ordinis/auth/OrdinisAuthProperties.java @@ -6,7 +6,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; * Конфиг JWT auth для интеграции с Keycloak (@nstart/auth). * *

{@code issuerUri} — OIDC issuer URL, например - * {@code https://auth.nstart.space/realms/nstart}. Spring Security сам тянет + * {@code https://altum.nstart.cloud/auth/realms/altum}. Spring Security сам тянет * JWK Set через {@code .well-known/openid-configuration}, поддерживает rotation * ключей. Если не задан — JWT validation выключен (permissive mode для dev). * diff --git a/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/config/OpenApiConfig.java b/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/config/OpenApiConfig.java index dd18dce..7b6fc55 100644 --- a/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/config/OpenApiConfig.java +++ b/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/config/OpenApiConfig.java @@ -21,14 +21,18 @@ import java.util.List; * OpenAPI 3 spec для Swagger UI на {@code /swagger-ui.html}. Spec — на * {@code /v3/api-docs}. * - *

Авторизация — JWT bearer от Keycloak ({@code auth.nstart.space}). - * Service account для интеграторов (Альтум — {@code altum-backend}). + *

Авторизация — JWT bearer от Keycloak realm {@code altum} + * ({@code altum.nstart.cloud/auth/realms/altum}). Service account для + * интеграторов через altum auth-service client management. + * + *

Старый realm {@code nstart} ({@code auth.nstart.space}) deprecated + * c Phase 1b (MR !271) — не использовать. */ @Configuration public class OpenApiConfig { - /** Keycloak issuer URI — base для auth/token endpoints. По умолчанию prod realm. */ - @Value("${ordinis.openapi.oauth.issuer-uri:https://auth.nstart.space/realms/nstart}") + /** Keycloak issuer URI — base для auth/token endpoints. По умолчанию altum realm. */ + @Value("${ordinis.openapi.oauth.issuer-uri:https://altum.nstart.cloud/auth/realms/altum}") private String oauthIssuer; @Bean @@ -72,7 +76,7 @@ public class OpenApiConfig { new Server().url("http://localhost:8080").description("local dev"))) .components(new Components() // Primary scheme: OAuth2 PKCE (для interactive Swagger UI users). - // Keycloak realm `nstart`, public client `ordinis-swagger` с PKCE. + // Keycloak realm `altum`, public client `ordinis` с PKCE. .addSecuritySchemes("oauth2", new SecurityScheme() .type(SecurityScheme.Type.OAUTH2)