+ * Default: CPU cores * 2, since the workload for auth-service is mainly IO-intensive. + *
+ *Set to -1 to use the default value.
+ * */ + @Builder.Default + private int initialAvailability = Runtime.getRuntime().availableProcessors() * 2; + + /** + * Docker swarm service id. + */ + private String swarmServiceId; + + /** + * Docker swarm task id. + */ + private String swarmTaskId; +} diff --git a/src/main/java/com/cleverthis/authservice/config/KeycloakClientConfig.java b/src/main/java/com/cleverthis/authservice/config/KeycloakClientConfig.java index fcd73dd..cb328da 100644 --- a/src/main/java/com/cleverthis/authservice/config/KeycloakClientConfig.java +++ b/src/main/java/com/cleverthis/authservice/config/KeycloakClientConfig.java @@ -1,15 +1,37 @@ package com.cleverthis.authservice.config; +import com.cleverthis.authservice.service.impl.KeycloakAdminReactiveClient; +import org.keycloak.admin.client.Keycloak; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; /** * Config for keycloak clients: * {@link com.cleverthis.authservice.service.impl.KeycloakIdentityManagerService} - * and {@link com.cleverthis.authservice.service.impl.KeycloakAdminClient}. + * and {@link KeycloakAdminReactiveClient}. */ @Configuration @EnableConfigurationProperties(KeycloakClientConfigProperties.class) public class KeycloakClientConfig { - // empty for now + + /** + * Create a Keycloak admin client. + * */ + @Bean + @Lazy + @ConditionalOnMissingBean + public Keycloak keycloakAdminClient( + final KeycloakClientConfigProperties configProperties + ) { + return Keycloak.getInstance( + configProperties.getKeycloakAdminHost(), + configProperties.getRealm(), + configProperties.getAdminAccountUsername(), + configProperties.getAdminAccountPassword(), + "admin-cli" + ); + } } diff --git a/src/main/java/com/cleverthis/authservice/config/PermissionMappingConfigProperties.java b/src/main/java/com/cleverthis/authservice/config/PermissionMappingConfigProperties.java index 4f2598b..025afa1 100644 --- a/src/main/java/com/cleverthis/authservice/config/PermissionMappingConfigProperties.java +++ b/src/main/java/com/cleverthis/authservice/config/PermissionMappingConfigProperties.java @@ -40,6 +40,7 @@ public class PermissionMappingConfigProperties { @NotBlank(message = "Keycloak Client ID cannot be blank in permission mapping rule") private String keycloakClientId; + @Builder.Default private List