在上一篇中,我们学习了SpringBootAdmin 客户端的配置,这一章我们来学习 Service的配置,以及安全认证。

在前端代理服务器后面运行

如果Spring Boot Admin服务器在反向代理后面运行,则可能需要通过(spring.boot.admin.ui.public-url)配置可访问该服务器的公共URL 。另外,当反向代理终止https连接时,可能有必要进行配置server.forward-headers-strategy=native

配置选项

名称

描述

默认值

spring.boot.admin.context-path

上下文路径在应为Admin Server的静态资产和API提供服务的路径的前面加上前缀。相对于Dispatcher-Servlet。

spring.boot.admin.monitor.status-interval

检查实例状态的时间间隔。

10,000毫秒

spring.boot.admin.monitor.status-lifetime

终身身份。只要最后一个状态没有过期,该状态就不会更新。

10,000毫秒

spring.boot.admin.monitor.info-interval

检查实例信息的时间间隔。

1m

spring.boot.admin.monitor.info-lifetime

信息的生命周期。只要最后一个信息没有过期,该信息就不会被更新。

1m

spring.boot.admin.monitor.default-timeout

发出请求时的默认超时。可以使用覆盖特定端点的各个值spring.boot.admin.monitor.timeout.*

10,000

spring.boot.admin.monitor.timeout。*

每个EndpointId都有超时的键值对。默认为默认超时。

spring.boot.admin.monitor.default-retries

失败请求的默认重试次数。修改请求(PUTPOSTPATCHDELETE)将永远不会重试。可以使用覆盖特定端点的各个值spring.boot.admin.monitor.retries.*

0

spring.boot.admin.monitor.retries。*

键值对,具有每个endpointId的重试次数。默认为默认重试。修改请求(PUTPOSTPATCHDELETE)将永远不会重试。

spring.boot.admin.metadata键进行清理

与这些正则表达式模式匹配的键的元数据值将在所有json输出中被清除。

".**password$", ".\*secret$", ".\*key$", ".\*token$", ".\*credentials.**", ".*vcap_services$"

spring.boot.admin.probed端点

对于Spring Boot 1.x客户端应用程序,SBA使用OPTIONS请求探测指定的端点。如果路径与id不同,则可以将其指定为id:path(例如health:ping)。

"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"

spring.boot.admin.instance-auth.enabled

启用从Spring配置属性中提取凭证

true

spring.boot.admin.instance-auth.default-user-name

用于验证注册服务的默认用户名。该spring.boot.admin.instance-auth.enabled属性必须为true

null

spring.boot.admin.instance-auth.default-user-password

用于验证注册服务的默认用户密码。该spring.boot.admin.instance-auth.enabled属性必须为true

null

spring.boot.admin.instance-auth.service-map。*。用户名

用于使用指定名称对注册的服务进行身份验证的用户名。该spring.boot.admin.instance-auth.enabled属性必须为true

spring.boot.admin.instance-auth.service-map。*。用户密码

用户密码,用于使用指定名称对注册的服务进行身份验证。该spring.boot.admin.instance-auth.enabled属性必须为true

spring.boot.admin.instance-proxy.ignored-headers

向客户提出请求时,不转发标题。

"Cookie", "Set-Cookie", "Authorization"

spring.boot.admin.ui.public-url

用于在ui中构建基本href的基本URL。

如果在反向代理后面运行(使用路径重写),则可以用来进行正确的自我引用。如果省略主机/端口,将从请求中推断出来。

spring.boot.admin.ui.brand

要在导航栏中显示的品牌。

"<img src="assets/img/icon-spring-boot-admin.svg"><span>Spring Boot Admin</span>"

spring.boot.admin.ui.title

要显示的页面标题。

"Spring Boot Admin"

spring.boot.admin.ui.login-icon

在登录页面上用作图像的图标。

"assets/img/icon-spring-boot-admin.svg"

spring.boot.admin.ui.favicon

用作默认图标的图标,用于桌面通知的图标。

"assets/img/favicon.png"

spring.boot.admin.ui.favicon-danger

当一项或多项服务关闭并用作桌面通知时,用作收藏夹图标。

"assets/img/favicon-danger.png"

启用spring.boot.admin.ui.remember-me

切换为在登录页面上显示/隐藏“记住我”复选框。

true

spring.boot.admin.ui.poll-timer.cache

以毫秒为单位的轮询持续时间,以获取新的缓存数据。

2500

spring.boot.admin.ui.poll-timer.datasource

以毫秒为单位的轮询持续时间,以获取新的数据源数据。

2500

spring.boot.admin.ui.poll-timer.gc

以毫秒为单位的轮询持续时间,以获取新的gc数据。

2500

spring.boot.admin.ui.poll-timer.process

以毫秒为单位的轮询持续时间,以获取新的过程数据。

2500

spring.boot.admin.ui.poll-timer.memory

以毫秒为单位的轮询持续时间,以获取新的内存数据。

2500

spring.boot.admin.ui.poll-timer.threads

以毫秒为单位的轮询持续时间,以获取新的线程数据。

2500

安全认证

服务端加入安全认证,登录授权
pom.xml

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

application.properties:

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

配置登录的用户名和密码
代码配置:

@Configuration(proxyBeanMethods = false)
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final AdminServerProperties adminServer;

    private final SecurityProperties security;

    public SecuritySecureConfig(AdminServerProperties adminServer, SecurityProperties security) {
        this.adminServer = adminServer;
        this.security = security;
    }


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(this.adminServer.path("/"));

        http.authorizeRequests(
                (authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll() // <1>
                        .antMatchers(this.adminServer.path("/actuator/info")).permitAll()
                        .antMatchers(this.adminServer.path("/actuator/health")).permitAll()
                        .antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated() // <2>
        ).formLogin(
                (formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and() // <3>
        ).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults()) // <4>
                .csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) // <5>
                        .ignoringRequestMatchers(
                                new AntPathRequestMatcher(this.adminServer.path("/instances"),
                                        HttpMethod.POST.toString()), // <6>
                                new AntPathRequestMatcher(this.adminServer.path("/instances/*"),
                                        HttpMethod.DELETE.toString()), // <6>
                                new AntPathRequestMatcher(this.adminServer.path("/actuator/**")) // <7>
                        ))
                .rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));
    }

}

服务端代码配置好之后,在客户也需要定义 连接的服务端的用户名和密码,客户端连接配置

application.properties: 加入连接的用户名和密码

#连接admin 服务端:
spring.boot.admin.client.url=http://localhost:8080
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin

不加入这个,客服端无法连接服务端,请注意。

配置好之后,启动服务端项目,访问出现登录界面,说明安全认证配置成功了。

springboot nacos 账号密码就是不能登录 spring boot admin默认密码_java


springboot nacos 账号密码就是不能登录 spring boot admin默认密码_ico_02


说明配置成功了,服务端的其他配置项,大家就自己搭建玩就好了。