From 4fe7f1e800b4ebe304a8011f5fc2cbb0bab67f40 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Wed, 13 May 2026 13:49:07 +0300 Subject: [PATCH] =?UTF-8?q?fix(auth):=20@Autowired=20=D0=BD=D0=B0=20Workfl?= =?UTF-8?q?owRoles=20main=20ctor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Класс имеет два constructor'а (main + test). Без явной @Autowired аннотации Spring может выбрать no-arg ctor → props=null → rolesClaimPath() fallback на realm_access.roles несмотря на env var ORDINIS_AUTH_ROLES_CLAIM=resource_access.ordinis.roles. Симптом: 403 forbidden_role с message 'Требуется realm role: ordinis:schema:reviewer' для user с ordinis:admin в resource_access.ordinis.roles (super-role override не работал потому что currentRoles() возвращал пустой set из неправильного claim path). Fix: @Autowired на main ctor — Spring выбирает его, props инжектится, rolesClaim читается из env var правильно. --- .../terravault/ordinis/restapi/auth/WorkflowRoles.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/auth/WorkflowRoles.java b/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/auth/WorkflowRoles.java index 9d82e83..c81f27f 100644 --- a/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/auth/WorkflowRoles.java +++ b/ordinis-rest-api/src/main/java/cloud/nstart/terravault/ordinis/restapi/auth/WorkflowRoles.java @@ -77,6 +77,13 @@ public class WorkflowRoles { private final OrdinisAuthProperties props; + /** + * Spring autowire constructor. Без @Autowired Spring randomly выбирает + * один из multiple ctors — был bug что выбирался no-arg test ctor + * → props=null → fallback на default realm_access.roles (несмотря на + * env var ORDINIS_AUTH_ROLES_CLAIM=resource_access.ordinis.roles). + */ + @org.springframework.beans.factory.annotation.Autowired public WorkflowRoles(OrdinisAuthProperties props) { this.props = props; }