[Spring] Failed to load remote configuration.

2024. 3. 1. 18:10BE/Spring

728x90

본 포스팅은 Swegger 사용 중 접근 허가와 관련된 에러인 "Failed to load remote configuration"에 대해 다룹니다.

에러 화면

Spring Security는 spring 서버에서 인증 및 인가를 다뤄주는 라이브러리입니다. Spring Security를 이용하여 인증 및 인가를 처리하고 swegger를 이용하려고 했을 때, 아래와 같은 화면이 뜨고 403 에러가 발생하는 것을 알 수 있었습니다. 

설정들

swagger를 사용하기 위해 application.properties에 아래와 같이 추가하고

gradle에 의존성 추가할 때, 스프링 부트가 3.0 버전이상이라 아래와 같이 추가해주었습니다.

그리고 SwaggerConfig 파일에 아래와 같이

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI() {
        String jwt = "JWT";
        SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwt);
        Components components = new Components().addSecuritySchemes(jwt, new SecurityScheme()
                .name(jwt)
                .type(SecurityScheme.Type.HTTP)
                .scheme("bearer")
                .bearerFormat("JWT")
        );
        return new OpenAPI()
                .components(new Components())
                .info(apiInfo())
                .addSecurityItem(securityRequirement)
                .components(components);
    }


    private Info apiInfo() {
        return new Info()
                .title("BackOffice") // API의 제목
                .description("BackOffice API") // API에 대한 설명
                .version("1.0.0"); // API의 버전
    }
}

SecurityFilter 설정 아래와 같이

        http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() // resources 접근 허용 설정
                        .requestMatchers("/admin/**").permitAll() // '/api/user/'로 시작하는 요청 모두 접근 허가
                        .requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
                        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );

해주었는데, 해결이 안되는 것이었습니다..

해결 방법

여러 원인들을 생각(e.g. JWT 때문인가?)해보며 몇 시간 끙끙대다가 에러의 처음으로 돌아왔습니다.

이유는 모르겠지만, api-docs로 접근하고 있는 걸 발견!했습니다. 맨처음 코드를 작성할 때, https://devocean.sk.com/experts/techBoardDetail.do?ID=164919 블로그를 참고했는데, 여기에 있는 걸 그대로 따라한 것이 문제였습니다..

따라서 이것을 properties파일에서 지워주면! 아래와 같이 접속이 잘 되는 것을 볼 수 있었습니다.