API 인증 필요 여부 개별 관리
이전 글에서 API 인증 필요 여부를 표기하려면 @SecurityRequirement 를 이용했었다.
하지만 이 애노테이션을 클래스에 붙이면 해당 클래스 아래의 모든 엔드포인트에 자물쇠가 표시된다.
만약 그 중 1~2개 정도는 인증이 필요 없어서 자물쇠 표시를 하지 않으려면 어떡 해야할까?
애노테이션을 메서드 단위로 붙여서 인증이 필요 없는 메서드만 안붙이기에는 너무 번거롭다.
이런 상황을 위해 API 인증이 불필요한 메서드에만 애노테이션을 붙여서 자물쇠를 제거하는 방법을 정리해두려 한다.
구현하기
구현 순서는 아래와 같다.
- 커스텀 애노테이션 추가
- SwaggerConfig 추가 설정
- 컨트롤러에 커스텀 애노테이션 추가
- 결과 확인
1. 커스텀 애노테이션 추가
SecurityNotRequired 라는 이름의 애노테이션을 추가해준다.
이름은 원하는대로 설정해도 상관 없다.
SecurityNotRequired
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SecurityNotRequired {
}
2. SwaggerConfig 추가 설정
기존 설정에서 아래처럼 OperationCustomizer 를 빈등록해준다.
여기서 애노테이션을 등록해줄 때는 본인이 만든 커스텀 애노테이션으로 등록해주면 된다.
SwaggerConfig
... 기존 설정
@Bean
public OperationCustomizer customize() {
return (Operation operation, HandlerMethod handlerMethod) -> {
SecurityNotRequired annotation = handlerMethod.getMethodAnnotation(SecurityNotRequired.class);
// SecurityNotRequire 어노테이션있을시 스웨거 시큐리티 설정 삭제
if (annotation != null) {
operation.security(Collections.emptyList());
}
return operation;
};
}
3. 컨트롤러에 커스텀 애노테이션 추가
클래스에 @SecurityRequirement 애노테이션을 추가하고
인증이 필요 없는 엔드포인트에만 @SecurityNotRequired 애노테이션을 추가하였다.

4. 결과 확인
스웨거 UI를 보면 아래처럼 애노테이션을 추가해준 부분에는 자물쇠 표시가 사라져있음을 확인할 수 있다.

'API 만들어 보기 > API 문서 자동화' 카테고리의 다른 글
API 문서 자동화 2: Spring Rest Docs + Swagger 구현하기 (0) | 2024.06.12 |
---|---|
API 문서 자동화 1: Spring Rest Docs vs Swagger 장단점 비교 (0) | 2024.06.11 |
스웨거 사용해보기 3: SwaggerConfig에 서버 설정 (0) | 2024.05.03 |
스웨거 사용해보기 2: API 인증 필요 여부 표기 (0) | 2024.05.02 |
스웨거 사용해보기 1: 기본 설정 (0) | 2024.05.01 |