第二节 给SpringBootAdmin的server端加入spring security安全控制

news2025/1/13 13:17:38

前言

本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧

第一节 完成基础配置,暴露所有端点
第二节 给SpringBootAdmin的server端加入spring security安全控制
第三节 给SpringBootAdmin的client端加入spring security安全控制
第四节 配置SpringBootAdmin日志管理
第五节 配置SpringBootAdmin电子邮件通知

一、加入spring security安全控制

加入依赖

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

重启后,再次访问,会跳转到login页面
在这里插入图片描述

二、配置server用户名密码

这里可以通过配置文件,内存或者数据库配置用户名密码,具体可以参考下spring security的相关文档。这里我们采用比较的配置文件配置

# admin server
spring.security.user.name=server
spring.security.user.password=server

重启后,就可以用这个账号密码登录了
在这里插入图片描述登录成功后,可以看到登录的账号,但这个时候你会发现注册上来的client不见了。client端会报错如下:

at spring-boot-admin ([http://localhost:9090/instances]): 401 : [no body].

原因是server加入了安全控制,这里我们先配置SecurityConfig来实现访问。加入配置类

@Configuration(proxyBeanMethods = false)
public class SecurityConfig {
    @Bean
    protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests.anyRequest().permitAll())
                .csrf().disable().build();
    }
}

再次启动server,发现client已经注册上来了。但是毕竟这个配置类太过暴力,直接所有的request都permitAll,接下来可以参考官方例子SecuritySecureConfig做下修改:

@Configuration(proxyBeanMethods = false)
public class SecurityConfig {
    @Bean
    protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl("/");
        return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests
                        .requestMatchers(new AntPathRequestMatcher("/login"))
                        .permitAll()
                        .anyRequest()
                        .authenticated())
                .formLogin((formLogin) -> formLogin.loginPage("/login").successHandler(successHandler)) // <3>
                .logout((logout) -> logout.logoutUrl("/logout"))
                .httpBasic(Customizer.withDefaults())
                .csrf().disable().build();
    }
}

改动以后顺便把登录界面也优化了:
在这里插入图片描述登录以后,我们发现client又掉了,orz。接下来就需要配置下client端了。

配置client访问server的账号密码

修改client的配置文件:

# admin server accout
spring.boot.admin.client.username=server
spring.boot.admin.client.password=server

再重启client,现在client又可重新注册上来了。
在这里插入图片描述

至此server端的安全控制基本就配置完毕了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt-->QQ登陆界面图形化界面

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);this->setFixedSize(640,520);//设置窗口标题this->setWindowTitle("QQ&qu…

勒索病毒危害,企业该如何预防勒索病毒

勒索病毒是一种恶意软件&#xff0c;它会对企业内的计算机系统或数据进行加密或锁定&#xff0c;并要求企业支付赎金以解锁或解密。 勒索病毒危害&#xff1a; 数据丢失&#xff1a;勒索病毒可以加密您的文件、照片、视频和其他重要数据&#xff0c;使其无法访问或恢复。如果…

解决centos7和主机win11不能互传文件复制粘贴;及CentOS7最小安装版 VMware Tools安装

linux.iso 中的文件已经加载到 /mnt/cdrom 目录下了。在 /mnt/cdrom 中找到加载出来的文件并拷贝到 /tmp目录下&#xff0c;进行解压。解压好后从中找到 vmware-install.pl&#xff0c;这是vmware tools的安装文件&#xff0c;执行此文件开始安装 ./vmware-install.pl 一路Ente…

宏基因组碳循环高分分析思路,你值得拥有!

碳是生命物质中的主要元素之一&#xff0c;是有机质的重要组成部分。地球上主要有四大碳库&#xff0c;即大气碳库&#xff0c;海洋碳库、陆地生态系统碳库和岩石圈碳库。碳循环&#xff0c;是指碳元素在自然界的循环状态&#xff0c;大气中的二氧化碳&#xff08;CO2&#xff…

Shamir秘密共享

目录 Shamir秘密共享 秘密共享的概念 问题1: 问题2: 秘密分割门限方案的定义 Shamir秘密共享方案 组成 构造思路 构造 计算f(x) 例1 例2 二、GMW方案 Shamir秘密共享 秘密共享的概念 问题1: 保险柜中存放有10个人的共有财产&#xff0c;要从保险柜中取出物品&am…

【Python编程系列】5、变量

作用 变量用来存储数据: a = 10使用规则 python作为解释型,属于弱类型和动态型语言。它不需要强制声明变量的数据类型,因为它不需要编译。一般要编译的语言需要明确所有的东西,只有这样才能编译成二进制文件。 由于不需要声明数据类型,那么在声明变量时会一并赋值: …

什么是serialVersionUID?为什么要使用它?

目录 一、什么是serialVersionUID二、创建一个serialVersionUID三、使用 serialVersionUID3.1 序列化实例程序3.2 反序列化实例程序3.3 serialVersionUID不同的情况下进行序列话和反序列化3.4 能不能不提供serialVersionUID&#xff1f; 一、什么是serialVersionUID SerialVer…

Dubbo hystrix 熔断降级 详细示例 多服务 公共api

目录 介绍 demo-api pom 目录 代码api provider 服务提供者 目录 pom 服务实现代码 启动代码 配置 日志 consumer 消费者 目录 pom 调用service接口 调用serviceImpl类 ctr 配置 页面调用熔断效果 相关文章 介绍 因为网上和官网拷贝的文档发现有很多版本…

axios拦截器和token

axios拦截器 ​​ 在请求或响应被 then 或 catch 处理前拦截它们。 // 添加请求拦截器 axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});// 添加响应…

阿里云国际站代理商:阿里巴巴的阿里云到底是做什么用的,怎么我们普通人不理解,也不知道是怎么样一种服务?

阿里巴巴的阿里云到底是做什么用的&#xff0c;怎么我们普通人不理解&#xff0c;也不知道是怎么样一种服务&#xff1f;   阿里巴巴的阿里云&#xff0c;不只是一个名字——打通理解的迷宫   面对朝日逐极而生的科技天光&#xff0c;阿里巴巴如一座灯塔引领者我们向前。然…

openGauss学习笔记-02 openGauss系统架构

文章目录 openGauss学习笔记-02 openGauss系统架构2.1 软件架构2.1.1 逻辑架构2.1.2 逻辑架构说明 openGauss学习笔记-02 openGauss系统架构 openGauss是单机系统&#xff0c;在这样的系统架构中&#xff0c;业务数据存储在单个物理节点上&#xff0c;数据访问任务被推送到服务…

nginx七层代理和四层转发的理解

先来理解一下osi七层模型 应用层 应用层是ISO七层模型的最高层&#xff0c;它直接与用户和应用程序交互&#xff0c;提供用户与网络的接口。它包括各种应用协议&#xff0c;如HTTP、FTP、SMTP等&#xff0c;用于实现特定应用的功能和通信表示层 表示层…

鉴机:粉丝买了一台宝峰uv5r对讲机,竟是假的?

最近有粉丝在某宝上购买了一台uv5r对讲机&#xff0c;回来拆盒后发现有点不对劲&#xff0c;甚至连logo都没有&#xff0c;请各位鉴别一下&#xff0c;看看是真的还是假的。 网友买的uv5r对讲机 其他网友看完后几乎一致认为是假的&#xff0c;有人还贴出来比对照片&#xff1a…

系统版本由Centos7.9恢复到RedHat7.5

问题描述 安装nginx的时候无法联网&#xff0c;通过rpm包进行的安装&#xff0c;打包编译时使用的部分依赖包是centos的资源&#xff0c;导致安装后系统版本由之前的RedHat7.5变成了centos7.9。现需恢复到之前的系统版本。 解决方法 将之前安装的centos资源包删除&#xff0c…

GBASE智赋城轨再下一城!兰州轨道交通2号线开通试运营

“欢迎乘坐兰州轨道交通2号线……”6月29日上午9时36分&#xff0c;伴随一阵悦耳的播报声&#xff0c;兰州轨道交通2号线一期工程开通试运营&#xff0c;面向社会开放。 兰州轨道交通2号线一期工程全长9.06公里&#xff0c;共设置9座车站&#xff0c;2号线的开通试运营宣告兰州…

倍量过左峰选股公式,找到起爆点

左峰简单来说就是前期拉升形成的波段高点&#xff0c;左峰之后是回调&#xff0c;形成凹口&#xff0c;过左峰就是突破前期波段高点。从左峰的数量上&#xff0c;有过一峰、二峰、三峰等&#xff1b;从量价上&#xff0c;有倍量过左峰、缩量过左峰等。本文编写倍量过左峰选股公…

Ubuntu:修改ssh端口并开放防火墙

Ubuntu开放防火墙并修改ssh端口 1、概述2、修改ssh端口并启用防火墙2.1、 修改ssh端口2.2、开启防火墙2.3、端口加入防火墙2.4、查看防火墙中开放的端口2.5、使用新ssh端口连接服务器 3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超…

Vue解决首屏加载缓慢的首屏优化秒开(亲测有效)

一.开启gzip打包 在vue.config.js文件中 &#xff08;1&#xff09;.使用chainWebpack配置的方式 chainWebpack(config){ config.module.rule(vue).use(vue-loader).loader(vue-loader).tap(options > {options.compilerOptions.preserveWhitespace truereturn options…

【数据结构】循环队列

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f40c; 个人主页&#xff1a;蜗牛牛啊 &#x1f525; 系列专栏&#xff1a;&#x1f6f9;数据结构、&#x1f6f4;C &#x1f4d5; 学习格言&#xff1a;博观而约取&…

OpenGl纹理贴图

给图形赋予颜色时&#xff0c;采用纹理贴图的方式。 每个顶点关联一个纹理坐标(Texture Coordinate),然后在图形的其他片段上进行片段插值(Fragment Interpolation) 顶点坐标如下&#xff1a; float vertices[] { // positions // colors // texture coords 0.2f, 0.2f, 0.0f,…