Keycloak 从管理控制台获取配置
Keycloak getting config from admin console
我已经通过重写 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 进程?
在您的 Authenticator
实施中使用 AuthenticationFlowContext
:
这两种方法都公开了它:
void authenticate(AuthenticationFlowContext context);
void action(AuthenticationFlowContext context);
final Map<String, String> config = context.getAuthenticatorConfig().getConfig();
我已经通过重写 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 进程?
在您的 Authenticator
实施中使用 AuthenticationFlowContext
:
这两种方法都公开了它:
void authenticate(AuthenticationFlowContext context);
void action(AuthenticationFlowContext context);
final Map<String, String> config = context.getAuthenticatorConfig().getConfig();