새소식

TIL

[TIL] 230610 <Spring> Swagger 연결 시 HTTP ERROR 403 해결

  • -

 

1. build.gradle에 아래의 의존성을 추가

 implementation 'org.springdoc:springdoc-openapi-ui:1.6.6'

 


2. SecurityConfig의 securityFilterChain 안에 아래의 코드를 추가하여 접근을 허용하였음

.requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-resources/**").permitAll()

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // CSRF 설정
        http.csrf((csrf) -> csrf.disable());  //CSRF 보호를 비활성화

        // 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
        http.sessionManagement((sessionManagement) ->
                sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        );

        // 요청 권한 설정: 특정 URL 패턴에 대한 접근 권한을 설정
        http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers("/user/signup").permitAll() // 회원가입 요청 모두 접근 허가
                        .requestMatchers("/user/signin").permitAll() // 로그인 요청 모두 접근 허가
                        .requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-resources/**").permitAll()
                        .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );

        // 필터 관리: JWT 인증 필터와 권한 부여 필터를 필터 체인에 추가
        http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.class);
        http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);

        return http.build();
    }

 

 

 

localhost에 대한 액세스가 거부됨
이 페이지를 볼 수 있는 권한이 없습니다. HTTP ERROR 403

403 오류는 요청이 서버에 도달했지만 서버가 요청을 거부했음을 나타냅니다. 이는 주로 인증 또는 권한 문제로 발생합니다.
주어진 코드에서는 Spring Security를 사용하여 요청을 관리하고 있으므로 이 문제가 발생할 수 있습니다.

▼ ▼ ▼ ▼ ▼

위에서 build.gradle에 추가해줬던 의존성 대신 아래의 의존성을 추가하니 정상적으로 swagger 접근이 가능했음!

implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.1.0'

 

 

 

'springdoc-openapi-ui:1.6.6'과 'springdoc-openapi-starter-webmvc-ui:2.1.0' 의 차이점

모두 Spring Boot 애플리케이션에 Swagger UI를 통합하기 위한 라이브러리이지만, 중요한 차이점이 존재!

 

'springdoc-openapi-ui:1.6.6'

- 의존성 구성 : 'springdoc-openapi-ui'는 개별적으로 추가해야 하는 의존성으로, 필요한 다른 의존성도 수동으로 추가해야 할 수 있습니다. 예를 들어, 다른 `springdoc-openapi` 모듈을 함께 사용해야 하는 경우 별도로 추가해야 합니다.

- 기능 및 호환성 : `1.6.6` 버전은 최신 Spring Boot 및 Spring Security 버전과의 호환성에 문제가 있을 수 있습니다.
오래된 버전으로 인해 새로운 기능이나 버그 수정이 포함되지 않을 수 있습니다.

- 설정 : 이 버전에서는 Swagger UI를 사용하기 위해 추가적인 설정이 필요할 수 있습니다. 특히, Spring Security와 통합할 때 더 많은 설정이 필요할 수 있습니다.

 

 

(▼ 해결한 방법)
'springdoc-openapi-starter-webmvc-ui:2.1.0'


- 의존성 구성 : 'springdoc-openapi-starter-webmvc-ui'는 Spring Boot 스타터 패키지로 제공됩니다.
스타터 패키지는 관련된 여러 의존성을 한꺼번에 추가해주기 때문에, 개별적으로 의존성을 추가할 필요가 없습니다.

- 기능 및 호환성: 최신 버전이므로 최신 기능과 향상된 성능을 제공하며, 최신 Spring Boot 버전과의 호환성도 보장됩니다. 최신 보안 패치와 버그 수정이 포함되어 있습니다.

- 편의성: 스타터 패키지는 설정이 더 간편하고, 기본적인 설정을 자동으로 해주기 때문에 개발자에게 더 많은 편의를 제공합니다. Swagger UI와 Spring Security의 통합도 더 간편하게 이루어집니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.