Как добавить безопасность для Java Melody Monitor URL в весеннем приложении - PullRequest
0 голосов
/ 27 февраля 2020

Мы используем Java Melody в весеннем приложении. Я хотел бы добавить безопасность доступа к /monitoring url только администратору. Я должен проверить какое-то значение свойства и разрешения, исходя из того, что нужно получить доступ.

Какие существуют подходы для достижения этой цели? Можем ли мы сделать это в условиях весенней безопасности?

Пожалуйста, дайте мне знать, если мне потребуется предоставить дополнительную информацию здесь.

1 Ответ

1 голос
/ 15 марта 2020

Вы можете использовать параметры javamelody authorized-users для http basi c auth или 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 Security с .antMatchers("/monitoring").hasRole("ADMIN").

Например, в Spring-boot 2, с использованием зависимости spring-boot-starter-security, basi c auth и в памяти пользователя:

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 Security перед фильтром javamelody Monitoring в вашем файле. xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...