前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot-SBA增加Security机制

SpringBoot-SBA增加Security机制

作者头像
Damon小智
发布2024-02-03 10:43:57
860
发布2024-02-03 10:43:57
举报
文章被收录于专栏:全栈文档库全栈文档库

Spring Boot Admin提供了可视化的监控服务,通过Spring Security的机制保护管理端点,以保证监控数据的安全性。可以使用Spring Security添加认证和授权功能,例如基于用户角色的访问控制、登录页面、注销等。需要配置Spring Security的相关依赖,并在配置文件中设置安全属性。可以使用默认的用户名和密码进行登录,并为管理员用户配置访问授权。Spring Boot Admin还提供了自定义登录页面的功能,以便更好地满足实际需求。

在本教程开启之前,需要先进行SpringBoot-Admin项目的搭建和开启,并在需要被检控的客户端引入spring-boot-admin-client包,并填写相关配置参数。具体步骤可以参考我的上篇文章:SpringBoot-开启Admin监控服务

一、pom.xml 引入 security 包

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

添加完依赖后,刷新maven自动导入jar包。

二、SBA项目(服务端)的 application.yml 里增加 security 配置

代码语言:javascript
复制
spring:
  #开启安全认证 用户名和密码
  security:
    user:
      name: "root"
      password: "root"

三、SBA项目(服务端)增加 SecuritySecureConfig 类

image 2 1024x575 - SpringBoot-SBA增加Security机制
image 2 1024x575 - SpringBoot-SBA增加Security机制
代码语言:javascript
复制
package com.config;

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .antMatchers(adminContextPath+"/actuator/health").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
    }
}

四、被监控项目(客户端)的 application.yml 里增加 security 连接信息

代码语言:javascript
复制
spring:

  application:
    ## 注册服务名
    name: ProjectSchedule

  # springbootAdmin
  boot:
    admin:
      client:
        url: http://127.0.0.1:8088
        username: 'root'
        password: 'root'
  jackson:
    serialization:
      indent_output: true

五、测试改动后的变化及是否连接成功

1、服务端访问,需要输入账号密码

image 1 1024x617 - SpringBoot-SBA增加Security机制
image 1 1024x617 - SpringBoot-SBA增加Security机制

2、服务端看到客户端的在线信息

admin 005 1024x538 - SpringBoot-SBA增加Security机制
admin 005 1024x538 - SpringBoot-SBA增加Security机制

说明连接成功!Security机制顺利开启!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-5-9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档