@@ -92,7 +92,7 @@ public class AuthenticationService {
9292 private final KmsService kmsService ;
9393 private final KmsClientFactory kmsClientFactory ;
9494 private final ObjectMapper objectMapper ;
95- private final String adminGroup ;
95+ private final List < String > adminGroups ;
9696 private final DateTimeSupplier dateTimeSupplier ;
9797 private final AwsIamRoleArnParser awsIamRoleArnParser ;
9898 private final AuthTokenService authTokenService ;
@@ -116,7 +116,7 @@ public AuthenticationService(
116116 KmsClientFactory kmsClientFactory ,
117117 ObjectMapper objectMapper ,
118118 @ Value ("${cerberus.admin.roles:#{null}}" ) String adminRoleArns ,
119- @ Value ("${cerberus.admin.group} " ) String adminGroup ,
119+ @ Value ("#{' ${cerberus.admin.groups}'.split(',')} " ) List < String > adminGroups ,
120120 @ Value ("${cerberus.auth.user.token.maxRefreshCount:#{0}}" ) int maxTokenRefreshCount ,
121121 DateTimeSupplier dateTimeSupplier ,
122122 AwsIamRoleArnParser awsIamRoleArnParser ,
@@ -133,7 +133,7 @@ public AuthenticationService(
133133 this .kmsClientFactory = kmsClientFactory ;
134134 this .objectMapper = objectMapper ;
135135 this .adminRoleArns = adminRoleArns ;
136- this .adminGroup = adminGroup ;
136+ this .adminGroups = adminGroups ;
137137 this .dateTimeSupplier = dateTimeSupplier ;
138138 this .awsIamRoleArnParser = awsIamRoleArnParser ;
139139 this .maxTokenRefreshCount = maxTokenRefreshCount ;
@@ -525,8 +525,11 @@ private AuthTokenResponse generateToken(
525525 meta .put (CerberusPrincipal .METADATA_KEY_USERNAME , username );
526526
527527 boolean isAdmin = false ;
528- if (userGroups .contains (this .adminGroup )) {
529- isAdmin = true ;
528+ for (String group : this .adminGroups ) {
529+ if (userGroups .contains (group )) {
530+ isAdmin = true ;
531+ break ;
532+ }
530533 }
531534 meta .put (METADATA_KEY_IS_ADMIN , String .valueOf (isAdmin ));
532535 meta .put (CerberusPrincipal .METADATA_KEY_GROUPS , StringUtils .join (userGroups , ',' ));
0 commit comments