SpringBoot-SBA增加Security机制

2024-01-13 02:44

本文主要是介绍SpringBoot-SBA增加Security机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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


一、Spring Security 介绍

Spring Security是Spring框架的一个强大模块,专注于提供全面的企业级安全服务。其主要目标是保护应用程序免受各种安全威胁,包括身份验证、授权、攻击防护等。以下是Spring Security的主要特性:

  • 身份验证和授权:Spring Security提供了一套强大的身份验证和授权机制,支持多种认证方式(如基于表单、HTTP基本认证、OAuth等),并能够灵活定义和配置访问权限。
  • 强化Web安全性:针对Web应用程序,Spring Security提供了一系列的防护措施,包括CSRF(跨站请求伪造)防护、点击劫持防护等,以确保Web应用程序在面临常见攻击时保持高度安全性。
  • 集成式认证:支持多种认证源,包括数据库、LDAP、OAuth等,使得企业可以根据自身需求选择最适合的认证方式,实现灵活且可定制的身份验证。
  • 细粒度的访问控制:Spring Security允许对应用程序的每个资源进行细粒度的访问控制配置,可以通过注解或XML配置方式实现对URL、方法的权限控制。
  • 会话管理:提供了强大的会话管理功能,支持基于内存、数据库、集中式存储等多种方式,保障用户会话的安全性。
  • 易于集成: Spring Security是一个高度模块化的框架,易于集成到Spring生态系统中。通过简单的配置,开发者可以轻松地引入和定制安全功能。

引入Spring Security的目的是为了在Spring Boot Admin中加强安全性,确保监控服务的操作和数据受到有效的保护,提供更可靠的监控服务。


二、引入 Spring Security 包

首先,我们需要在客户端和服务端都使用 pom.xml 引入 security 包。
在 pom.xml 中引入 Spring Security 的 starter 包,以加入安全认证和授权功能。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

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


三、SBA 服务端配置

然后,我们需要在SBA项目(服务端)的 application.yml 里增加 security 配置,在服务端项目的 application.yml 中添加 Spring Security 的相关配置,包括用户名和密码。 

1、编辑配置文件

spring:#开启安全认证 用户名和密码security:user:name: "root"password: "root"

2、添加配置类

接着,我们需要在SBA项目(服务端)增加 SecuritySecureConfig 类。
我们新建 config 目录,目录下创建 SecuritySecureConfig  类,配置 Spring Security 的安全策略,包括登录、注销和 CSRF防护 等。

详细代码如下:

SecuritySecureConfig.java

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();}@Overrideprotected 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/**");}
}

四、SBA 客户端配置

1、配置 security 连接信息

下一步,我们需要在被监控项目(客户端)的 application.yml 里增加 security 连接信息。
在被监控的客户端项目中,我们需要在 application.yml 中配置与服务端相同的用户名和密码信息,以建立连接。

spring:application:## 注册服务名name: ProjectSchedule# springbootAdminboot:admin:client:url: http://127.0.0.1:8088username: 'root'password: 'root'jackson:serialization:indent_output: true

五、发布测试

最后一步,我们需要在发布完成后,测试改动后的变化及是否连接成功
可以通过访问服务端地址,输入账号密码登录,查看在线客户端信息,确保连接成功。

1、访问服务端

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


2、查看客户端在线信息

在服务端,我们可以看到客户端的在线信息。

点击进去看到更详细的内容。

admin 007 1024x541 - SpringBoot-开启Admin监控服务

说明连接成功!Security 机制顺利开启!这样,Spring Boot Admin 的安全机制就顺利地加入到监控服务中,为监控数据的安全性提供了保障!


、引入Security 机制的必要性

1、身份验证与授权保障

引入Spring Security机制有助于确保监控服务的身份验证和授权得到有效管理。通过设定用户名和密码,可以精确控制用户对监控端点的访问权限,从而提高系统的整体安全性。

2、安全访问监控数据

Spring Security提供了可靠的机制,确保敏感监控数据仅对授权用户可见。这有助于防范未经授权的访问,保障监控数据的隐私与安全性。

3、防范恶意攻击

引入安全机制有助于系统抵御潜在的恶意攻击。通过实施身份验证和授权管理,我们能够限制对监控服务的非法访问,从而降低系统遭受恶意入侵的风险。

4、提升系统稳定性

通过加强安全性措施,系统的稳定性也将得到提升。防止未授权访问和恶意攻击有助于减少潜在的系统故障和不稳定因素,确保监控服务的可靠性。

5、最佳实践与规范

引入Security机制是一种符合安全最佳实践的做法,有助于确保监控服务的开发和部署过程符合业界的安全规范,提高整体系统的可信度。

这篇关于SpringBoot-SBA增加Security机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599980

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.