【发布时间】:2021-05-28 18:14:03
【问题描述】:
我正在尝试实现本文档中提到的自定义客户端存储库。
根据文档,属性在代码中是硬编码的,我正在尝试从 application.yml 中读取这些属性。但是,需要设置的属性不可用。
任何指针如何实现?如何在此处提供 application.yml 属性。
Application.yml:
sso:
enabled: true
registrationId: myApp
clientName: myApp
.....
sso属性对应的POJO
@Data
@ConfigurationProperties("sso")
public class SsoPropertiesConfig {
private boolean enabled;
private String clientName;
private String registrationId;
....
网络安全配置
@Slf4j
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class OAuth2LoginSecurityConfig extends WebSecurityConfigurerAdapter {
SsoPropertiesConfig ssoPropertiesConfig = new SsoPropertiesConfig();
private final PasswordResolver passwordResolver;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(this.myClientRegistration());
}
private ClientRegistration myClientRegistration() {
log.info("ssoPropertiesConfig :{}",ssoPropertiesConfig);
// ssoPropertiesConfig 的所有属性都为 NULL
return ClientRegistration.withRegistrationId(ssoPropertiesConfig.getRegistrationId())
.clientName(ssoPropertiesConfig.getClientName())
....
.build();
}
}
【问题讨论】:
标签: spring-boot spring-security spring-security-oauth2 java-11