From eb59e243b5dcd469395a7f65e2e4e4e4cc66fdc2 Mon Sep 17 00:00:00 2001 From: taeyeongKims Date: Fri, 17 Jan 2025 18:12:29 +0900 Subject: [PATCH] swagger use jwt --- build.gradle | 3 +- .../api/global/config/SecurityConfig.java | 4 +- .../api/global/config/SwaggerConfig.java | 39 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/example/api/global/config/SwaggerConfig.java diff --git a/build.gradle b/build.gradle index f1c2bf90..4bb87f13 100644 --- a/build.gradle +++ b/build.gradle @@ -82,7 +82,8 @@ dependencies { //객체 간 매핑 처리 implementation 'org.modelmapper:modelmapper:3.1.0' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' + // swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0' // S3 implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' diff --git a/src/main/java/com/example/api/global/config/SecurityConfig.java b/src/main/java/com/example/api/global/config/SecurityConfig.java index c0f4bcc8..34fb79b5 100644 --- a/src/main/java/com/example/api/global/config/SecurityConfig.java +++ b/src/main/java/com/example/api/global/config/SecurityConfig.java @@ -52,8 +52,8 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .exceptionHandling(exceptionHandling -> exceptionHandling.authenticationEntryPoint(new FailedAuthenticationEntryPoint())) .authorizeHttpRequests(authorize -> authorize - .requestMatchers("/oauth2/**", "/api/v1/**").permitAll() - .requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/webjars/**", "/swagger-resources/**", "/swagger-ui.html", "/actuator/**").permitAll() + .requestMatchers("/**", "/error", "/favicon.ico", "/**/*.png", "/**/*.gif","/**/*.webp", "/**/*.svg", "/**/*.jpg", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() + .requestMatchers("/api/auth/**", "/oauth2/**", "/swagger-ui/**", "/v3/api-docs/**", "/api/v1/**", "/aws").permitAll() .anyRequest().authenticated() ) .oauth2Login(oauth2 -> oauth2 diff --git a/src/main/java/com/example/api/global/config/SwaggerConfig.java b/src/main/java/com/example/api/global/config/SwaggerConfig.java new file mode 100644 index 00000000..4b71a6dd --- /dev/null +++ b/src/main/java/com/example/api/global/config/SwaggerConfig.java @@ -0,0 +1,39 @@ +package com.example.api.global.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SwaggerConfig { + + @Bean + public OpenAPI DanpatAPI() { + Info info = new Info() + .title("Spring API") + .description("단팥 백엔드 API 명세서입니다..") + .version("1.0.0"); + + String jwtSchemeName = "JWT TOKEN"; + // API 요청헤더에 인증정보 포함 + SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwtSchemeName); + // SecuritySchemes 등록 + Components components = new Components() + .addSecuritySchemes(jwtSchemeName, new SecurityScheme() + .name(jwtSchemeName) + .type(SecurityScheme.Type.HTTP) // HTTP 방식 + .scheme("bearer") + .bearerFormat("JWT")); + + return new OpenAPI() + .addServersItem(new Server().url("/")) + .info(info) + .addSecurityItem(securityRequirement) + .components(components); + } +} \ No newline at end of file