当我们使用'KeycloakSpringBootConfigResolver'从springboo属性文件而不是keycloak.json中读取keycloak配置时。

现在,有一些指南可以通过覆盖http://www.keycloak.org/docs/2.3/securing_apps_guide/topics/oidc/java/multi-tenancy.html中指定的'KeycloakConfigResolver'来使用keycloak实现多租户应用程序。

此处定义的步骤只能与keycloak.json一起使用
我们如何才能使其适应于Spring Boot应用程序,以便从Spring Boot属性文件中读取keycloak属性并实现多租户。

最佳答案

如果将org.keycloak.representations.adapters.config.AdapterConfig注入组件,则可以访问在application.yaml(或application.properties)中保护的keycloak配置。

@Component
public class MyKeycloakConfigResolver implements KeycloakConfigResolver {

    private final AdapterConfig keycloakConfig;

    public MyKeycloakConfigResolver(org.keycloak.representations.adapters.config.AdapterConfig keycloakConfig) {
        this.keycloakConfig = keycloakConfig;
    }

    @Override
    public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
        // make a defensive copy before changing the config
        AdapterConfig currentConfig = new AdapterConfig();
        BeanUtils.copyProperties(keycloakConfig, currentConfig);

        // changes stuff here for example compute the realm

        return KeycloakDeploymentBuilder.build(currentConfig);
    }

}

10-06 16:03