微服务SpringCloud项目(八):admin监控整合security设置安全密码

微服务SpringCloud项目(八):admin监控整合security设置安全密码最近输出的文章以实用耐造为主,希望对你有所帮助而不是长篇大论全是理论实战弱鸡,最后感谢大家耐心观看完毕,留个点赞收藏是您对我最大的鼓励!

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

📖前言

心态好了,就没那么累了。心情好了,所见皆是明媚风景。

“一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。

🚓将spring-boot-starter-security启动器添加到您的依赖项中:


使用 springboot-admin 对项目进行 健康监控 等的操作,分两部分,server和client,server端监控client端,client端就是你的项目

ps:我们要对 admin 监控模块添加 security 来进行权限过滤和一些接口控制,保证我们的 admin 不光明正大的暴露在他人的眼皮底下,jasypt 则用于对 yml 文件里的一些访问密码以及账号进行加盐加密操作,从而达到安全的效果,故此我们引入如下依赖,并进行配置操作。

1. 引入依赖如下:

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

<!-- 引入数据库密码加密 -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

2. 关于 jasypt 的加密

# jasypt 密码加密配置
jasypt:
  encryptor:
    # 加密盐值建议放在springboot的application运行环境里读取
    password: ${JASYPT_ENCRYPTOR_PASSWORD}
    # 加密算法设置 3.0.0 以后
    algorithm: PBEWithMD5AndDES
    iv-generator-classname: org.jasypt.iv.NoIvGenerator

3. 关于 securityyml 配置

主要就是登录的用户名和密码记得先用 jasypt 加密一下哦~

spring:
  application:
    # 应用名称
    name: dream-monitor
  # security安全配置
  security:
    user:
      name: ENC(kcectA4qZ4IDk793wgLXlA==)
      password: ENC(bEBsIS85g93TCVSnl5ULe3utFwTTeGwB)
  # 允许覆盖bean定义
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        group: DEFAULT_GROUP
        namespace: #命名空间
        enabled: true
        encode: UTF-8
        username: nacos
        # nacos 密码
        password: ENC(eRxrrhJffCFgrinBTO3lPzQIkso6IZlB)
        max-retry: 32
        file-extension: yml
      discovery:
        server-addr: #nacos地址

4. 关于 securityconfig 配置

package com.cyj.dream.visual.monitor.config;

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import io.swagger.models.HttpMethod;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

/** * @Description: Web权限配置 * @BelongsProject: DreamChardonnay * @BelongsPackage: com.cyj.dream.visual.monitor.config * @Author: ChenYongJia * @CreateTime: 2021-09-29 * @Email: chen87647213@163.com * @Version: 1.0 */
@Slf4j
@Configuration
@Order(0)
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {

    private final AdminServerProperties adminContextPath;

    public WebSecurityConfigurer(AdminServerProperties adminContextPath) {
        this.adminContextPath = adminContextPath;
    }

    /** * WebSecurity 权限配置 * * @param http 权限http * @return * @author ChenYongJia * @date 2021/9/29 */
    @Override
    //@SneakyThrows
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(this.adminContextPath.getContextPath() + "/");

        //配置允许的请求以及跨域问题
        http.authorizeRequests()
                .antMatchers(this.adminContextPath.getContextPath() + "/assets/**").permitAll()
                // 所有请求都可以访问,本地开发打开下面一行的注释
                //.antMatchers("/**").permitAll()
                //不进行权限验证的请求或资源(从配置文件中读取),本地开发可以,将本行注释掉
                .antMatchers(this.adminContextPath.getContextPath() + "/login").permitAll()
                .antMatchers("/**")
                .fullyAuthenticated()
                .and()
                .csrf()
                .disable()
                // 配置登录地址
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                //配置登出地址
                .logout()
                // /userInfo/loginOutByToken
                .logoutUrl("/logout")
                .and()
                // 开启跨域
                .cors()
                .and()
                // 取消跨站请求伪造防护
                .csrf()
                .ignoringRequestMatchers(
                        new AntPathRequestMatcher(this.adminContextPath.getContextPath() +
                                "/instances", HttpMethod.POST.toString()),
                        new AntPathRequestMatcher(this.adminContextPath.getContextPath() +
                                "/instances/*", HttpMethod.DELETE.toString()),
                        new AntPathRequestMatcher(this.adminContextPath.getContextPath() + "/actuator/**"))
                .disable();
        // @formatter:on
    }

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/actuator/**");
    }

}

5. server 启动

接下来就可以直接启动了,访问你设置的 ip/端口 就会跳转到登录页面,输入 账号密码 就可以看到原谅色的 admin 了,但是此时还没有客户端被监控,下面再来说下 client

image.png

6. client 端其实很简单

这里在上一篇有写到过大家可以去参考一下第七篇:微服务SpringCloud项目(七):整合spring-boot-admin监控

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.1.1</version>
    </dependency>

PS:最近输出的文章以实用耐造为主,希望对你有所帮助而不是长篇大论全是理论实战弱鸡,最后感谢大家耐心观看完毕,留个点赞收藏是您对我最大的鼓励!


🎉总结:

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

今天的文章微服务SpringCloud项目(八):admin监控整合security设置安全密码分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22421.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注