Spring Boot

如何配置Spring Boot Endpoints的访问权限

小樊
82
2024-09-14 09:11:52
栏目: 编程语言

要配置Spring Boot Endpoints的访问权限,你需要使用Spring Security

  1. 添加依赖

pom.xml文件中添加Spring Security依赖:

   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 配置Spring Security

创建一个新的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

0
看了该问题的人还看了