spring-cloud-config 開啓了spring-security後,導致自動刷新配置接口異常:
開始報
POST http://localhost:8888/actuator/bus-refresh
{
"timestamp": "2018-07-01T11:48:52.417+0000",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/actuator/bus-refresh"
}
然後我就加了Basic Auth,使用的是POSTMAN
加上正確的帳號密碼後,報以下錯誤:
{
"timestamp": "2018-07-01T11:48:52.417+0000",
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
"path": "/actuator/bus-refresh"
}
下面說下解決方案:
首先我採用的是spring-cloud 2.0.3版本,
看了官網的描述,才知道,spring5.0以後,以及把spring.security.basic.enabled給去掉了,
所以我們推薦我們去創建一個自己的WebSecurityConfig類去實現WebSecurityConfigAdapter。
上代碼:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 高版本的丟棄了
*
* security:
* basic:
* enabled: true
*
* 配置,應該使用以下方式開啓
*
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// Configure HttpSecurity as needed (e.g. enable http basic).
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
http.csrf().disable();
//注意:爲了可以使用 http://${user}:${password}@${host}:${port}/eureka/ 這種方式登錄,所以必須是httpBasic,
// 如果是form方式,不能使用url格式登錄
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
}
}
然後再試刷新POST /actuator/bus-refresh ,刷新成功!
開始借鑑了其他同行的錯誤問題,得以解決思路,附上問題鏈接:
spring cloud config 使用用戶認證後 刷新配置端點bus-refresh 403
https://www.oschina.net/question/3877992_2281549