如何在 spring 应用程序中为 Java Melody Monitor URL 添加安全性
How to add security for Java Melody Monitor URL in spring application
我们正在 spring 应用程序中使用 Java Melody
。我想添加安全性以仅由管理员用户访问 /monitoring
url。我必须检查一些 属性 值和权限,基于那个应该获得访问权限。
实现这一目标有哪些不同的方法?我们可以 spring 安全吗?
如果我需要在此处提供任何其他信息,请告诉我。
您可以使用 javamelody 参数 authorized-users
进行 http 基本身份验证或 allowed-addr-pattern
进行基于 ip 地址的访问。
参见 https://github.com/javamelody/javamelody/wiki/UserGuide#16-security
例如在application.yml中,如果你使用Spring-boot:
javamelody:
init-parameters:
authorized-users: admin:password
或者您可以将 Spring 安全性与 .antMatchers("/monitoring").hasRole("ADMIN")
一起使用。
例如在Spring-boot 2中,使用spring-boot-starter-security依赖,基本认证和内存用户存储:
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests().antMatchers("/monitoring").hasRole("ADMIN")
.anyRequest().permitAll();
}
@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder().username("user").password("password")
.roles("USER").build();
UserDetails admin = User.withDefaultPasswordEncoder().username("admin").password("password")
.roles("ADMIN").build();
return new InMemoryUserDetailsManager(user, admin);
}
}
如果您在没有 Spring 引导的情况下使用 Spring 安全性,请务必将 Spring 安全性过滤器放在 web.xml 文件中的 javamelody 监控过滤器之前。
我们正在 spring 应用程序中使用 Java Melody
。我想添加安全性以仅由管理员用户访问 /monitoring
url。我必须检查一些 属性 值和权限,基于那个应该获得访问权限。
实现这一目标有哪些不同的方法?我们可以 spring 安全吗?
如果我需要在此处提供任何其他信息,请告诉我。
您可以使用 javamelody 参数 authorized-users
进行 http 基本身份验证或 allowed-addr-pattern
进行基于 ip 地址的访问。
参见 https://github.com/javamelody/javamelody/wiki/UserGuide#16-security
例如在application.yml中,如果你使用Spring-boot:
javamelody:
init-parameters:
authorized-users: admin:password
或者您可以将 Spring 安全性与 .antMatchers("/monitoring").hasRole("ADMIN")
一起使用。
例如在Spring-boot 2中,使用spring-boot-starter-security依赖,基本认证和内存用户存储:
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests().antMatchers("/monitoring").hasRole("ADMIN")
.anyRequest().permitAll();
}
@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder().username("user").password("password")
.roles("USER").build();
UserDetails admin = User.withDefaultPasswordEncoder().username("admin").password("password")
.roles("ADMIN").build();
return new InMemoryUserDetailsManager(user, admin);
}
}
如果您在没有 Spring 引导的情况下使用 Spring 安全性,请务必将 Spring 安全性过滤器放在 web.xml 文件中的 javamelody 监控过滤器之前。