IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> spring boot admin server添加安全配置 -> 正文阅读

[Java知识库]spring boot admin server添加安全配置

安全配置接入

这里通过spring security安全框架来实现,引入如下依赖:

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

然后在yml配置文件中,添加上默认用户,如下:

spring:
  security:
    user:
      name: admin
      password: admin

为什么直接使用默认用户,固定的,而不是像正常的系统那样读数据库用户表,个人选择这样的做法是,第一没有做admin-server更细的权限划分,哪怕有多个用户,权限也是一样的,那还有必要多用户么?第二,如果要求这个监控服务要用系统的用户数据来做登录,那么就学习下spring security的使用,扩展下即可实现数据源登录的操作,第三,如果要求和原有系统做类似单点的功能,作为菜单嵌入在原系统中,那么建议再跳转时,携带token,然后admin-server项目加个拦截器,获取token,然后采用和原系统一样的校验规则,通过说明原系统已经登录了,那么就直接放行,否则重定向到原系统登录页,这种方案此时都不需要维护用户了,只要校验token就好,我反正没做这么复杂,能够保证简单安全即可,如果有朋友需要做这么复杂的话,可以参考下2,3方案的思路。

先增加spring security相关的配置文件,如下:

@EnableWebSecurity
@Configuration(proxyBeanMethods = false)
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 + "/instances/**").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/**"
                );
    }
}

启动admin-server服务,访问页面,此时就会需要先登录了,如下:
在这里插入图片描述

问题出现

输入admin/admin后,查看信息,发现一同注册到nacos的服务demo能够正常展示信息,而admin-server服务却不行,如下:
在这里插入图片描述

点击进去查看原因,如下:
在这里插入图片描述

很明显是401,未认证错误,照理说我们都登录了。
而实际报401的接口是下面这个:
在这里插入图片描述

这个接口出问题,导致后续的数据都出不来了。

解决方案

这个接口出问题,这个接口很明显是单独查询某个实例的健康状态的,从30d25be46cc9这个ID就能知道了,做的是单个查询,此时这个接口出不来数据,报401,我并不想去看spring security的源代码,研究为啥都登录了但是还是报401,换个解决思路,我如果把这个接口放行,会不安全么,我感觉是不会的,为啥,因为这个接口得有个ID啊,ID谁知道,而且想知道这个id就得先访问如下接口:
在这里插入图片描述

在这里插入图片描述

这个接口我们又没放行,那就只有登录后才能访问这个接口拿到具体id,问题是你都能登录了,我还担心这个接口对你放行安不安全么,所以这种带着id的接口放行没关系,因为id不是规则的,猜不了,就能保证这个接口的安全了,但是可能防止不了一直刷这个接口,但是我们做安全是为了防止信息泄漏,一直刷接口的事,要做也不会针对这个监控服务啊,无利可图,就算监控服务给刷蹦了,也不影响主业务,所以无妨。
所以修改下spring security相关的配置文件,增加如下配置:

在这里插入图片描述

重启后,发现admin-server正常了,如下:
在这里插入图片描述

现在我准备直接访问开放的实例健康接口,如下:
在这里插入图片描述

结果如下:
在这里插入图片描述

依旧还是需要登录。

所以最坏的情况是想到id不可预测,开放也没事,现在测试后,发现即使开放了,依旧有登录校验,连id真的泄漏或被猜到的情况都不用考虑了,当然了,安全这块了解的很少,这篇只是做个安全配置的做法和问题解决的分享,仅做参考!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:30:57  更:2022-05-15 11:31:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:51:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码