首页 > 解决方案 > Keycloak 从管理控制台获取配置

问题描述

getConfigProperties我通过覆盖接口的方法 在 keycloak 中创建了配置AuthenticatorFactory

@Override
public List<ProviderConfigProperty> getConfigProperties() {
    final List<ProviderConfigProperty> configProperties = new ArrayList<>();
    ProviderConfigProperty property = new ProviderConfigProperty();
    property.setName("external.url");
    property.setLabel("External service base url");
    property.setType(ProviderConfigProperty.STRING_TYPE);
    property.setHelpText("Base url for the external service base url");
    configProperties.add(property);

    return configProperties;
}

现在我试图在init()方法中访问管理控制台中的配置集

@Override
public void init(Config.Scope config) {
    super.init(config);
    url = config.get("external.url");
}

但事实并非如此,因为这需要配置文件,而不是管理控制台的配置。如何从管理控制台访问配置,以便我可以在运行时更改值而无需重新运行整个 docker 进程?

标签: javadockerkeycloak

解决方案


在您的Authenticator实现中使用AuthenticationFlowContext

这两种方法都暴露了它:

void authenticate(AuthenticationFlowContext context);
void action(AuthenticationFlowContext context);
final Map<String, String> config = context.getAuthenticatorConfig().getConfig();

推荐阅读