所以我在我的应用程序中使用keycloak,我在application.properties
中有一些值,如:
keycloak.auth-server-url = http://10.10.10.10:1010/auth
keycloak.resource = test-client
keycloak.credentials.secret = <very-big-secret>
keycloak.realm = test-realm
字符串
Spring使用这些数据配置keycloak连接,但我也在代码中使用它们,所以我有这样的配置:
@Data
@Configuration
@ConfigurationProperties(prefix = "keycloak")
public class KeycloakConfig {
private String authServerUrl;
private String realm;
private String resource;
private Credentials credentials;
}
型
我在keycloak中有一个管理员用户,我希望它在application.properties中的凭据如下:
keycloak.admin.username=admin.admin
keycloak.admin.password=changeit
型
所以我试着把我的配置类改成这样:
@Data
@Configuration
@ConfigurationProperties(prefix = "keycloak")
public class KeycloakConfig {
private String authServerUrl;
private String realm;
private String resource;
private Credentials credentials;
private Admin admin;
}
@Data
public class Admin {
private String username;
private String password;
}
型
但是当我尝试像这样运行应用程序时,我认为spring试图设置keycloak(.admin部分)的值,并且它不会启动:
***************************
APPLICATION FAILED TO START
***************************
Description:
Binding to target [Bindable@1cd5e41 type = org.keycloak.adapters.springboot.KeycloakSpringBootProperties, value = 'provided', annotations = array<Annotation>[@org.springframework.boot.context.properties.ConfigurationProperties(ignoreInvalidFields=false, ignoreUnknownFields=false, prefix=keycloak, value=keycloak)]] failed:
Property: keycloak.admin.password
Value: changeit
Origin: "keycloak.admin.password" from property source "applicationConfig: [classpath:/application.properties]"
Reason: The elements [keycloak.admin.password,keycloak.admin.username] were left unbound.
Property: keycloak.admin.username
Value: admin.admin
Origin: "keycloak.admin.username" from property source "applicationConfig: [classpath:/application.properties]"
Reason: The elements [keycloak.admin.password,keycloak.admin.username] were left unbound.
Action:
Update your application's configuration
型
是否可以将.admin
部分放在keycloak
下面,或者我必须创建一个新类,例如:
@Data
@Configuration
@ConfigurationProperties(prefix = "my-keycloak")
public class MyKeycloakConfig {
private Admin admin;
}
型
还有:
my-keycloak.admin.username=admin.admin
my-keycloak.admin.password=changeit
型
3条答案
按热度按时间piwo6bdm1#
我不熟悉KeyCloak,但是你可以注入由读取属性的KeyCloak初始化的bean。
h22fl7wq2#
1.不可以,您不能在spring-boot(loaded)属性中自定义
keycloak.*
“domain”!证明:KeycloakSpringBootProperties,它说:字符串
型
a)...你可以只去:
型
B)或者如Typesafe Configuration Properties所述(并由[1]为
prefix="keycloak"
实现):型
您还可以使用
"my-keykloak"
(前缀和嵌套类/属性,请参阅exmaple/doc)获得更多结构。型
请参见启用。
型
作为决策帮助,请参考:
@Value
与类型安全。干杯
ymdaylpp3#
Keycloak使用KeycloakSpringBootProperties从应用程序属性读取值。似乎没有用户名或密码这样的值。可能Keycloak不需要这些值才能正常工作。
因此,您需要从Keycloak单独指定属性。