Skip to content

Commit

Permalink
Test: 스웨거 문서 테스트
Browse files Browse the repository at this point in the history
서버에서 스웨거 경로 지정 시
"/" 경로로 리다이렉트되는 현상 원인 파악중
  • Loading branch information
haeyonghahn committed Jul 30, 2023
1 parent 3c6a85c commit e518bb8
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ public WebSecurityCustomizer webSecurityCustomizer() {
"/static/css/**",
"/static/scss/**",
"/swagger-ui/**",
"/swagger-resources/**");
"/swagger-resources/**",
"/v3/api-docs/**");
}

@Bean
Expand All @@ -51,6 +52,7 @@ public SecurityFilterChain httpSecurity(HttpSecurity http) throws Exception {
.authorizeHttpRequests()
.antMatchers("/").permitAll()
.antMatchers("/health-check").permitAll()
.antMatchers("/docs").permitAll()
.antMatchers("/api/v1/tokens/temp").permitAll()
.anyRequest().authenticated()
.and()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package com.dnd.gooding.global.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HealthCheckController {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@GetMapping("/health-check")
public String healthCheck() {
logger.info("[HealthCheckController] health-check");
return "health-check";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.dnd.gooding.global.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class SwaggerController {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@GetMapping("/docs")
public String docs() {
logger.info("[SwaggerController] docs");
return "redirect:swagger-ui/index.html";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
import org.springframework.stereotype.Component;
Expand All @@ -24,6 +26,7 @@
@RequiredArgsConstructor
public class CustomOAuth2FailureHandler extends SimpleUrlAuthenticationFailureHandler {

private final Logger logger = LoggerFactory.getLogger(this.getClass());
private static final String DEFAULT_TARGET_URL = "/";
private final HttpCookieOAuthAuthorizationRequestRepository httpCookieOAuthAuthorizationRequestRepository;

Expand All @@ -38,12 +41,14 @@ public void onAuthenticationFailure(
.map(cookie -> URLDecoder.decode(cookie, UTF_8))
.orElse(DEFAULT_TARGET_URL);

logger.info("[CustomOAuth2FailureHandler] onAuthenticationFailure redirectUrl : " + redirectUrl);
String targetUrl = UriComponentsBuilder.fromUriString(redirectUrl)
.queryParam("error", specialCharactersRemove(exception.getMessage()))
.build().toUriString();

httpCookieOAuthAuthorizationRequestRepository.removeAuthorizationRequestCookies(request, response);

logger.info("[CustomOAuth2FailureHandler] onAuthenticationFailure targetUrl : " + targetUrl);
getRedirectStrategy().sendRedirect(request, response, targetUrl);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseCookie;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
Expand All @@ -33,6 +35,7 @@
@RequiredArgsConstructor
public class CustomOAuth2SuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final TokenService tokenService;

@Override
Expand All @@ -44,8 +47,10 @@ public void onAuthenticationSuccess(
Tokens tokens = tokenService.createTokens(customOAuth2User.getUserInfo());
String targetUrl = determineTargetUrl(request, tokens.accessToken());
setRefreshTokenInCookie(response, tokens.refreshToken());
logger.info("[CustomOAuth2SuccessHandler] onAuthenticationSuccess targetUrl : " + targetUrl);
getRedirectStrategy().sendRedirect(request, response, targetUrl);
} else {
logger.info("[CustomOAuth2SuccessHandler] onAuthenticationSuccess authentication : " + authentication);
super.onAuthenticationSuccess(request, response, authentication);
}
}
Expand All @@ -57,7 +62,7 @@ private String determineTargetUrl(HttpServletRequest request, String accessToken
.map(cookie -> URLDecoder.decode(cookie, UTF_8))
.map(this::encodeKoreanCharacters)
.orElse(getDefaultTargetUrl());

logger.info("[CustomOAuth2SuccessHandler] determineTargetUrl targetUrl : " + targetUrl);
return UriComponentsBuilder.fromUriString(targetUrl)
.queryParam("accessToken", accessToken)
.build().toUriString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import static org.springframework.http.HttpHeaders.*;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseCookie;
import org.springframework.http.ResponseEntity;
Expand All @@ -24,20 +26,24 @@
import io.swagger.v3.oas.annotations.security.SecurityRequirements;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Tag(name = "Token", description = "토큰 API")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/tokens")
public class TokenController {

private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final TokenService tokenService;

@Operation(summary = "임시 토큰을 발급 받는다.")
@SecurityRequirements()
@GetMapping(value = "temp", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<TokenResponse> tempAccessToken() {
String tempAccessToken = tokenService.createAccessToken(1L, "ROLE_USER");
logger.info("[TokenController] tempAccessToken : " + tempAccessToken);
return ResponseEntity
.ok()
.body(new TokenResponse(tempAccessToken));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
Expand All @@ -23,6 +25,7 @@
@RequiredArgsConstructor
public class JwtAuthenticationFilter extends OncePerRequestFilter {

private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final TokenService tokenService;

@Override
Expand All @@ -35,7 +38,7 @@ public void doFilterInternal(HttpServletRequest request, HttpServletResponse res
JwtAuthenticationToken authentication = tokenService.getAuthenticationByAccessToken(accessToken);
SecurityContextHolder.getContext().setAuthentication(authentication);
}

logger.info("[JwtAuthenticationFilter] accessToken : " + accessToken);
filterChain.doFilter(request, response);
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/dnd/gooding/global/util/CookieUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseCookie;
import org.springframework.util.SerializationUtils;

Expand All @@ -18,6 +20,8 @@
@NoArgsConstructor(access = PRIVATE)
public class CookieUtil {

private static final Logger logger = LoggerFactory.getLogger(CookieUtil.class);

public static Optional<Cookie> getCookie(HttpServletRequest request, String name) {

Cookie[] cookies = request.getCookies();
Expand All @@ -28,6 +32,7 @@ public static Optional<Cookie> getCookie(HttpServletRequest request, String name
.findFirst();
}

logger.info("[CookieUtil] getCookie cookies : " + cookies);
return Optional.empty();
}

Expand Down

0 comments on commit e518bb8

Please sign in to comment.