Skip to content

Commit

Permalink
fix: OAuth 검증 및 인가코드 전송을 프론트에서 처리하도록 하기
Browse files Browse the repository at this point in the history
  • Loading branch information
khee2 committed Jul 28, 2024
1 parent f9eaba1 commit 87fc77b
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,18 @@ public ResponseEntity<Map<String, String>> getKakaoConfig() {
return ResponseEntity.ok(config);
}
/**
* 카카오 OAuth2 인증 후 리다이렉트된 URL을 처리합니다.
* 카카오 OAuth2 인증 후 프론트엔드에서 전달된 인가 코드를 처리합니다.
*
* 프론트엔드에서 카카오 로그인 인증을 완료한 후, 카카오 서버로부터 전달받은 인가 코드를 사용하여
* 카카오 액세스 토큰을 요청하고, 사용자 정보를 가져와서 회원으로 등록 or 인증을 수행합니다.
* 그 후 우리의 자체 JWT 액세스 토큰과 리프레시 토큰을 생성 후 응답합니다. (기존 로그인과 동일)
* 백엔드에서 카카오 액세스 토큰을 요청하고, 사용자 정보를 가져와서 회원으로 등록하거나 인증을 수행합니다.
* 그 후, 자체 JWT 액세스 토큰과 리프레시 토큰을 생성하여 응답합니다. (기존 로그인과 동일)
*
* @param code 카카오 서버로부터 받은 인가 코드
* @param requestBody 인가 코드를 포함한 요청 본문
* @return 성공 시 JWT 액세스 토큰과 리프레시 토큰을 포함한 응답
*/
@GetMapping("/oauth2/code/kakao")
public ResponseEntity<?> oauth2KakaoCallback(@RequestParam String code) {
@PostMapping("/oauth2/code/kakao")
public ResponseEntity<?> oauth2KakaoCallback(@RequestBody Map<String, String> requestBody) {
String code = requestBody.get("code");
TokenResponseDto tokenResponse = oAuth2KakaoService.registerOrAuthenticateKakaoUser(code);
return ResponseEntity.ok(tokenResponse);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,22 +89,12 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
.exceptionHandling(exception -> exception
.accessDeniedHandler(jwtAccessDeniedHandler) // 접근 거부 처리기 설정
.authenticationEntryPoint(jwtAuthenticationEntryPoint) // 인증 진입점 설정
)
// Spring Security에서 OAuth2 로그인을 설정
// OAuth2 인증이 성공적으로 완료된 후 리다이렉트할 URL을 설정
.oauth2Login(oauth2 -> oauth2
.successHandler(oauth2AuthenticationSuccessHandler())
);
// JWT 필터 추가
http.addFilterBefore(new JwtFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class);

return http.build();
}
@Bean
public AuthenticationSuccessHandler oauth2AuthenticationSuccessHandler() {
return new SimpleUrlAuthenticationSuccessHandler("http://localhost:3000/oauth2/callback");
}

/**
* CORS 설정 빈 등록
*
Expand Down

0 comments on commit 87fc77b

Please sign in to comment.