Spring Boot 1.5.6.RELEASE尊重我的application.yml中指定的basic-auth用户名和密码。
我已升级到2.0.0.M4,现在应用程序始终以默认的'用户'并随机生成密码。基本上,以下设置始终完全被忽略。
我看到发行说明/ doc中的一些更改,特别是为了简化执行器安全性启用/禁用。我没有看到任何特定的内容。
有什么想法吗?
来自我的application.yml
security:
basic:
enabled: true
realm: some-service
user:
name: example_user
password: example_password
更新
我已经确认此功能刚刚从Spring Boot 2.0.0.M4开始取消
在附录中:
M4参考文献中缺少所有security.basic。*系列内容:
https://docs.spring.io/spring-boot/docs/2.0.0.M4/reference/html/common-application-properties.html
但是这里出现在M3参考文献中:
https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/html/common-application-properties.html
我能够暂时降级到M3以恢复之前的功能,但仍然会对取代它的内容有所了解。在这种情况下,我只需要一个硬编码的basic-auth用户。我知道我可以使用对象配置来进行更复杂的设置。
答案 0 :(得分:1)
编辑2018-01-31:
从Spring Boot 2.0.0-RC1(source)开始,已恢复(通过spring.security.user
配置键)自动配置单个用户的能力。
原始回答:
从Spring Boot 2.0.0-M4开始,不推荐使用Spring Boot security.*
属性。您可以在 Release Notes:
安全自动配置已经完全重新审视:开发人员应该阅读the companion blog post并参阅Spring Boot 2.0 Security wiki page以获取有关更改的更多详细信息。
为了恢复基本身份验证功能,您可以注册自定义WebSecurityConfigurerAdapter
,如下所示:
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Bean
public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
return new InMemoryUserDetailsManager(
User.withDefaultPasswordEncoder().username("user").password("password")
.authorities("ROLE_USER").build(),
User.withDefaultPasswordEncoder().username("admin").password("admin")
.authorities("ROLE_ACTUATOR", "ROLE_USER").build());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers(EndpointRequest.to("health", "info")).permitAll()
.requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ACTUATOR")
.requestMatchers(StaticResourceRequest.toCommonLocations()).permitAll()
.antMatchers("/**").hasRole("USER")
.and()
.cors()
.and()
.httpBasic();
}
}
(这也将为Actuator端点配置基本auth)
如果您还需要从.properties
文件中读取用户名和密码,则只需使用@Value
注释注入值即可。