Search code examples
spring-boot-admin

Spring Boot Admin Server and Client in the same application


I am using spring boot 2.5.1 with Java 11.

I am trying to create a SpringBoot Admin Server and Client in the same application, however when I start it, I get the following error in the console.

Ref: https://github.com/codecentric/spring-boot-admin

Error

Failed to register application as Application(name=PowWow, managementUrl=http://localhost:8085/actuator, healthUrl=http://localhost:8085/actuator/health, serviceUrl=http://localhost:8085/) at spring-boot-admin ([http://localhost:8085/instances]): 401 : [no body]. Further attempts are logged on DEBUG level

I have the following code in the Spring Boot application:

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.1</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.5.1</version>
    </dependency>

application.properties

server.port=8085
spring.application.name=PowWow
logging.file.name=powwow-logfile.log
logging.logback.rollingpolicy.max-history=3
logging.logback.rollingpolicy.max-file-size=5MB
spring.boot.admin.client.url=http://localhost:8085
management.endpoints.web.exposure.include=*
management.endpoints.health.show-details=always

PowWowApplication.java

@SpringBootApplication
@EnableScheduling
@EnableAdminServer
public class PowWowApplication {

More info

I can access the following url, but it does not load the application: http://localhost:8085/applications

enter image description here

Question

Do you know why the application is not being registered? Is it because you cannot have a spring-boot-admin-starter-server and a spring-boot-admin-starter-client in the same application?

More info

I realised that the application.properties has:

web.access.username=user
web.access.password=password

So I also add the following to allow the client access:

spring.boot.admin.client.username=user
spring.boot.admin.client.password=password

This removes the above error, i.e. there is no longer a 401 error when starting the server, but the application console reports that the server is down:

enter image description here

Console log: No Errors

http://localhost:8085/actuator/health {"status":"UP"}

However, the details show there is a 401.

enter image description here


Solution

  • I resolved this by adding /actuator/** to the following:

    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
           
            http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                    .authorizeRequests().antMatchers("/soapWS/**").permitAll().and()
                    .authorizeRequests().antMatchers("/actuator/**").permitAll()
                    .anyRequest().authenticated().and()
                    .httpBasic().and()
                    .csrf().disable();
        }