java - 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 进程?
解决方案
在您的Authenticator
实现中使用AuthenticationFlowContext
:
这两种方法都暴露了它:
void authenticate(AuthenticationFlowContext context);
void action(AuthenticationFlowContext context);
final Map<String, String> config = context.getAuthenticatorConfig().getConfig();
推荐阅读
- python - 使用pandas python过滤并合并多个单元格为一个单元格Excel
- javascript - 使 Vuetify 的 v-select 更小,以便它可以很好地适合段落
- r - 有没有办法在 R 的 for 循环中进行滚动平均计算?
- tabulator - 制表器 - 获取包含顺序和大小的列
- c++ - Arduino上未知大小的数组
- casl - 获得正确的允许条件字段
- python - 如何“包装”行和列索引?
- php - 在 laravel 8 中出现一个名为“Class 'Database\Seeders\App\Models\Product' not found'' 的错误
- c# - C# winforms - Form.ActiveForm = null 的场景是什么?
- java - Android/Java:如何从另一个活动访问我的 BottomNavigationView 特定变量?