Files
mdm-ordinis/ordinis-auth/src
Zimin A.N. 7593699990 feat(auth): refactor to Keycloak OIDC issuer-uri (drop static PEM)
@nstart/auth = Keycloak. Уходим от RSA PEM в Vault на OIDC discovery.

OrdinisAuthProperties:
- DROP: publicKey (PEM)
- ADD: issuerUri (https://auth.nstart.space/realms/nstart)
- ADD: jwkSetUri (optional override)
- ADD: audience (для aud валидации, когда узнаем client_id)
- RENAME: scopeClaim → rolesClaim (default: realm_access.roles)

SecurityConfig:
- JwtDecoders.fromIssuerLocation() — auto JWK Set discovery через
  /.well-known/openid-configuration. Ротация ключей не требует ручных операций.
- AudienceValidator (опц.) для проверки aud claim.
- Permissive stub когда issuer-uri пуст (dev mode).

ScopeContext:
- readClaimByPath() поддерживает nested путь "realm_access.roles".
- normalizeRoleToScope(): маппит Keycloak роли ("ordinis-public",
  "ORDINIS_INTERNAL", "x-RESTRICTED") в DataScope.
- JWT всегда побеждает query ?as_scope= (защита от scope escalation).
2026-05-04 02:13:08 +03:00
..