(65)java Spring Cloud+Spring boot+mybatis企業快速開發架構之使用Spring Security給Spring Boot Admin開啟認證
阿新 • • 發佈:2021-10-08
監控類的資料 Web 管理端最好不要設定成直接通過輸入訪問地址就可以訪問,必須得進行使用者認證才行,以保證資料的安全性。Spring Boot Admin 開啟認證也可以藉助於 spring-boot-starter-security。
加入依賴,程式碼如下所示。
1 2 3 4 |
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-security</artifactid>
</dependency> |
然後在屬性檔案裡面配置認證資訊:
1 2 |
spring.security.user.name=zhangsan
spring.security.user.password= 123456
|
自定義安全配置類,程式碼如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter{
private final String adminContextPath;
public SecurityPermitAllConfig(AdminServerPropertiesadminServerProperties){
this .adminContextPath=adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurityhttp)throwsException{
SavedRequestAwareAuthenticationSuccessHandlersuccessHandler= new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter( "redirectTo" );
//靜態資源和登入頁面可以不用認證
http.authorizeRequests().antMatchers(adminContextPath+ "/assets/**" ).permitAll()
.antMatchers(adminContextPath+ "/login" ).permitAll()
//其他請求必須認證
.anyRequest().authenticated()
//自定義登入和退出
.and().formLogin().loginPage(adminContextPath+ "/login" ).successHandler(successHandler).and().logout()
.logoutUrl(adminContextPath+ "/logout" )
//啟用HTTP-Basic,用於SpringBootAdminClient註冊
.and().httpBasic().and().csrf().disable();
}
}
|
重啟程式,然後就會發現需要輸入使用者名稱和密碼才能訪問 Spring Boot Admin 的 Web 管理端,如下圖所示。
這裡需要注意的是,如果 Spring Boot Admin 服務開啟了認證,監控的服務中也需要配置對應的使用者名稱和密碼,否則會註冊失敗。
在 spring-boot-admin-client 屬性檔案中加上使用者認證資訊:
1 2 spring.boot.admin.client.username=zhangsan
spring.boot.admin.client.password=
123456