7593699990
@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).