微服务:整合 Spring Boot Admin - 开启Security安全认证

一、前言

  监控类的数据 Web 管理端最好不要设置成直接通过输入访问地址就可以访问,必须得进行用户认证才行,以保证数据的安全性。Spring Boot Admin 开启认证也可以借助于 spring-boot-starter-security。

二、代码演示

1、microservice-monitor-server -> pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>microservice-minitor</artifactId>
        <groupId>com.microservice</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>microservice-monitor-server</artifactId>

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

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

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

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

监控中心需要添加 spring-boot-starter-security 的依赖。

2、microservice-monitor-server -> application.yml

server:
  port: 8888
spring:
  application:
    name: SpringBootAdmin
  boot:
    admin:
      ui:
        title: SpringBootAdmin-Server
  security:
    user:
      name: "admin"
      password: "admin"

eureka:
  instance:
    hostname: localhost
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://localhost:8001/register/eureka/

3、microservice-monitor-server -> MonitorWebSecurityConfigure.java

package com.microservice.minitor.config;

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

@EnableWebSecurity
public class MonitorWebSecurityConfigure extends WebSecurityConfigurerAdapter {
    private final String adminContextPath;

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

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

        http.authorizeRequests()
                //授予对所有静态资产和登录页面的公共访问权限。
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                //必须对每个其他请求进行身份验证
                .anyRequest().authenticated()
                .and()
                //配置登录和注销
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                //启用HTTP-Basic支持。这是Spring Boot Admin Client注册所必需的
                .httpBasic().and();
        // @formatter:on
    }
}

三、运行测试

启动注册中心 =》启动监控中心

打开Url:http://localhost:8888 会自动跳转到 http://localhost:8888/login

使用我们在application.yml中配置的用户名及密码,登录之后

原文地址:https://www.cnblogs.com/yansg/p/12582225.html

时间: 2024-11-08 14:54:44

微服务:整合 Spring Boot Admin - 开启Security安全认证的相关文章

SpringCloud(8)微服务监控Spring Boot Admin

1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring Boot Admin UI部分使用AngularJs将数据展示在前端. 2.工程架构 Eureka Server:服务注册中心,端口为8761. Admin Server:用于对微服务系统进行统一的监控和管理. Admin Clinet:客户端集成Admin. 3.构建Admin Server 新建

构建微服务:Spring boot 入门篇

构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适). 使用spring boot有什

构建微服务:Spring boot

构建微服务:Spring boot 在上篇文章构建微服务:Spring boot 提高篇中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 前几篇文章地址: 构建微服务:Spring boot 入门篇 构建微服务:Spring boot 提高篇 构建微服务:Spring boot中Redis的使用 构建微服务:thymeleaf使用详解 作者:纯洁的微笑出处:http://www.ityouknow.com/

Java微服务实践—Spring Boot系列

Java微服务实践-Spring Boot系列网盘地址:https://pan.baidu.com/s/1aMqPO4pXLeXDHvRuze-JWw 密码: j62z备用地址(腾讯微云):https://share.weiyun.com/c74335d7e383158ee3c4aaf193d471ed 密码:r5gqsk 原文地址:http://blog.51cto.com/12218470/2088359

微服务:整合 Spring Boot Admin - 邮件警报

一.前言 在Spring Boot Admin Server 中撒送预警邮件通知是很简单的,只需要简单的几个配置就可以了. 二.代码演示 1.microservice-monitor-server -> pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

spring boot 2.0.3+spring cloud (Finchley)7、微服务监控Spring Cloud Admin

参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI,提供如下功能: 显示 name/id 和版本号 显示在线状态 Logging 日志级别管理 JMX beans 管理 Threads 会话和线程管理 Trace 应用请求跟踪 应用运行参数信息,如: Java 系统属性 Java 环境变量属性 内存信息 Spring 环

在微服务领域Spring Boot自动伸缩如何实现

自动伸缩是每个人都想要的,尤其是在微服务领域.让我们看看如何在基于Spring Boot的应用程序中实现. 我们决定使用 Kubernetes . Pivotal Cloud Foundry 或 HashiCorp's Nomad 等工具的一个更重要的原因是为了让系统可以自动伸缩.当然,这些工具也提供了许多其他有用的功能,在这里,我们只是用它们来实现系统的自动伸缩.乍一看,这似乎很困难,但是,如果我们使用 Spring Boot 来构建应用程序,并使用 Jenkins 来实现 CI ,那么就用不

微服务,spring boot,spring cloud

什么是微服务 将复杂的业务系统根据业务拆分成多个子系统协同完成主体业务. 微服务的九大特性(根据Martin Fowler 在 Microservices 中的归纳) 服务组件化(灵活拆装,低耦合) 按业务组织团队(分工驱动团队的技术知识储备) 做产品的态度,团队对整个生命周期负责,业务进行拆分后,每个模块的的业务小而精,更容易做纵向扩展,把小功能做精 智能端点和哑管道,组件间从原先的方法调用的交互方式变为基于粗粒度的通信协议(Http的RESTful API,HSF,RabbitMQ) 去中心

微服务架构-Spring Boot(一)

最近在看微服务架构,包括Spring Boot.Spring Data.Spring Cloud. 先从Spring boot开始讲起:为什么会有Spring Boot? 原本实用Spring开发一个web应用步骤: 1.创建一个web项目并且导入相关jar包.SpringMVC Servlet 2.创建一个web.xml 3.编写一个控制类(Controller) 4.需要一个部署web应用的服务器:例Tomcat 而Spring Boot就是用来简化上述所示的新Spring应用的初始搭建以及