ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swagger + Spring Security 적용 시 No API definition provided. 오류
    Spring 2023. 9. 2. 15:04

    분명히 swagger에 여러 API를 등록한 상황이였는데, Security 적용하려고 테스트 해보는중인데,

    아무것도 뜨지않는 현상이 발생했습니다

     

    콘솔에도 오류가 찍히지않았고, 네트워크에서도 눈에 띌만한 오류는 확인할 수 없었습니다.

     

    제가 설정한 시큐리티 설정은 아래와 같습니다.

    @Bean
    	protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    		return http
                .authorizeHttpRequests(authorizeRequests -> authorizeRequests
                        .antMatchers("/static/**").permitAll() 			// 정적 리소스
                        .antMatchers("/swagger-ui/**").permitAll() 		// 스웨거 url
                        .antMatchers("/login").permitAll() 				// 로그인 페이지
                        .antMatchers("/api/v1/**").permitAll()			// API 호출
    //						.antMatchers("/api/v1/**").hasAnyAuthority("ROLE_ADMIN", "ROLE_USER") 	// API 호출
                        .antMatchers("/admin").hasAnyAuthority("ROLE_ADMIN", "ROLE_USER") 		// 관리자 페이지
                        .anyRequest().authenticated())				// 그외 모든 요청은 인증이 되어야 접근 가능
                .formLogin(login -> login
                        .loginProcessingUrl("/loginProc") 			// form 내 action 속성에 대응하는 URL을 지정
                        .usernameParameter("username")
                        .passwordParameter("password")
                        .defaultSuccessUrl("/admin", true)			// true : 로그인 성공후 url에 설정한 url이 붙음
                        .failureUrl("/login?error=true")
                .rememberMe(remember -> remember					// remember me 활성화
                        .key(rememberKey)							// 암호화 토큰에 사용할 키
                        .tokenValiditySeconds(604800)) 				// 토큰 유효 기간 (7일)
                .logout(logout -> logout
                        .logoutUrl("/logout").permitAll())
                .build();
    	}

     

    현재 개발중이니 스웨거 페이지에 접속이 가능하게  

    antMatchers("/swagger-ui/**").permitAll()  모든 사용자 접근을 허용해주었습니다.

     

    네트워크 탭에서 확인을 해보니 모두 200이였으나 

    딱 한개 swagger-config 가 302 오류로 나왔습니다.

    해당 경로는 스웨거 설정시에도 직접 지정한 경로가 아닙니다.

    해당 경로에도 권한을 줘야한다고 판단하였습니다.

     

    .antMatchers("/v3/**").permitAll()

    v3 이하 모든 경로에 접근 권한을 주었습니다.

     

    설정한 API 목록들이 뜨는것을 확인했습니다~~!

Designed by Tistory.