-
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 목록들이 뜨는것을 확인했습니다~~!
'Spring' 카테고리의 다른 글
공통 메서드 설계 Static vs Spring Bean (0) 2024.12.26 Maria DB 10.4.12 - Charset, Collation latin1에서 utf8mb4로 변경하기 (0) 2023.08.16 [Spring Security] Form 로그인 시 (username, password) 의 과정 (1) 2023.05.31