SpringCloud微服务监控——admin(一):admin服务端搭建并加入安全控制

释放双眼,带上耳机,听听看~!

在SpringCloud微服务中,有多个服务,要监控这些服务是否已经挂掉,这时可以使用admin来实现。代码如下:
基础工程的搭建何其他的微服务一样,不再赘述。
1):在pom文件中加入依赖:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
1<!-- eureka client start -->
2<dependency>
3    <groupId>org.springframework.cloud</groupId>
4    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
5</dependency>
6<!-- eureka client end -->
7<!--admin start-->
8<dependency>
9    <groupId>de.codecentric</groupId>
10    <artifactId>spring-boot-admin-starter-server</artifactId>
11</dependency>
12<!--admin end-->
13
14

2):在启动类中加入注解:


1
2
3
4
5
6
7
8
9
10
1@EnableAdminServer
2@EnableDiscoveryClient
3@SpringBootApplication
4public class AdminApplication {
5    public static void main(String[] args) {
6        SpringApplication.run(AdminApplication.class, args);
7    }
8}
9
10

3):在配置文件application.properties中,加入配置:


1
2
3
4
5
6
7
8
9
1server.port=10009
2spring.application.name=fyk-admin
3
4eureka.client.serviceUrl.defaultZone=http://192.168.22.11:8761/eureka/
5eureka.instance.prefer-ip-address=true
6#为服务指定自己的IP地址
7eureka.instance.ip-address=192.168.55.11
8
9

至此,简单的admin服务端就搭建好了。


上面的admin监控服务搭建好了之后,发现直接从页面就可以进入了该服务监控页面,在此,加入安全控制,让输入用户名密码才可以进入。(其实在实际应用中,也许用不到。因为一般而言,这种监控类的服务是不允许外网访问的或者只允许特定的IP访问,毕竟这种属于管理员操作的东西)

加入安全控制:(加入登录页面)
由于这里admin的UI中,已经有了登录页,这里就将就这个登录页:
1):pom文件中,加入依赖包:


1
2
3
4
5
6
7
8
9
10
11
12
1<!-- 加入security start -->
2<dependency>
3    <groupId>org.springframework.boot</groupId>
4    <artifactId>spring-boot-starter-security</artifactId>
5</dependency>
6<dependency>
7    <groupId>org.springframework.boot</groupId>
8    <artifactId>spring-boot-starter-web</artifactId>
9</dependency>
10<!-- 加入security end -->
11
12

2):在启动类中加入如下代码: 这些都是和security相关的,对于security很了解的话,完全可以自己配置,或者不使用admin的登录页面,使用定制化的页面也是可以的。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1@Configuration
2public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
3    private final String adminContextPath;
4
5    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
6        this.adminContextPath = adminServerProperties.getContextPath();
7    }
8
9    @Override
10    protected void configure(HttpSecurity http) throws Exception {
11        // @formatter:off
12        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
13        successHandler.setTargetUrlParameter("redirectTo");
14        successHandler.setDefaultTargetUrl(adminContextPath + "/");
15
16        http.authorizeRequests()
17          //静态资源访问权限
18            .antMatchers(adminContextPath + "/assets/**").permitAll()
19            //登录页访问权限
20            .antMatchers(adminContextPath + "/login").permitAll()
21            //其他请求,就必须要经过认证
22            .anyRequest().authenticated()
23            .and()
24            //配置登录页面
25            .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
26            //配置登出页面
27            .logout().logoutUrl(adminContextPath + "/logout").and()
28            //启用HTTP基本支持。这个是admin客户端注册所必须的配置
29            .httpBasic().and()
30            //使用cookie启用CRSF-Protection
31            .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())  
32            .ignoringAntMatchers(
33                adminContextPath + "/instances",   //禁用CRSF-Protection端点
34                adminContextPath + "/actuator/**"  //禁用CRSF-Protection执行器端点
35            );
36        // @formatter:on
37    }
38}
39
40

3):在application.properties中加入配置:登录的用户名@密码


1
2
3
4
1spring.security.user.name=fyk
2spring.security.user.password=123456
3
4

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Google Adsense优化心得

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索