要配置Spring Boot Endpoints的訪問權限,你需要使用Spring Security
在pom.xml
文件中添加Spring Security依賴:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
創建一個新的Java類,例如SecurityConfig
,并繼承WebSecurityConfigurerAdapter
。然后重寫configure
方法以自定義安全配置。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/actuator/**").hasRole("ADMIN") // 允許訪問/actuator/*的端點的角色為ADMIN
.anyRequest().authenticated() // 其他請求需要認證
.and()
.formLogin() // 啟用表單登錄
.permitAll() // 允許所有用戶訪問登錄頁面
.and()
.logout() // 啟用注銷功能
.permitAll(); // 允許所有用戶訪問注銷頁面
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication() // 使用內存中的認證
.withUser("admin").password("{noop}admin123").roles("ADMIN"); // 創建一個用戶名為admin,密碼為admin123,角色為ADMIN的用戶
}
}
這個示例配置了以下規則:
根據你的需求,你可以修改這些規則。更多關于Spring Security的配置選項,請參考官方文檔:https://docs.spring.io/spring-security/site/docs/current/reference/html5/#jc