KeycloakConfig.java

package net.andresbustamante.yafoot.users.config;

import org.keycloak.OAuth2Constants;
import org.keycloak.admin.client.Keycloak;
import org.keycloak.admin.client.KeycloakBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class KeycloakConfig {

    @Value("${app.keycloak.server.url}")
    private String serverUrl;

    @Value("${app.keycloak.server.realm}")
    private String realm;

    @Value("${app.keycloak.client.id}")
    private String clientId;

    @Value("${app.keycloak.client.secret}")
    private String clientSecret;

    @Value("${app.keycloak.client.username}")
    private String username;

    @Value("${app.keycloak.client.password}")
    private String password;

    @Bean
    public Keycloak keycloakClient() {
        // User "idm-admin" needs at least "manage-users, view-clients, view-realm, view-users" roles for
        // "realm-management"

        // Create user (requires manage-users role)

        return KeycloakBuilder.builder()
                .serverUrl(serverUrl)
                .realm(realm)
                .grantType(OAuth2Constants.PASSWORD)
                .clientId(clientId)
                .clientSecret(clientSecret)
                .username(username)
                .password(password)
                .build();
    }
}