spring-cloud-config 使用安全認證後 刷新配置端點 /actuator/bus-refresh 返回403

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章