포스트맨을 이용한 카카오인증 실습이다.
developers.kakao.com/ 사이트로 이동해서 나의 어플리케이션을 등록해준 뒤 앱키의 REST API키를 받아온다.

Authorization에서 필요한 값들을 입력해준 뒤 액세스 토큰을 받아온다.



UserController - kakaoLogin
@PostMapping("/kakaoLogin")
public ResponseEntity<CommonResponseDto> kakaoLogin(@RequestParam String code, HttpServletResponse response) throws JsonProcessingException {
try {
String token = kakaoService.kakaoLogin(code, response);
Cookie cookie = new Cookie(JwtUtil.AUTHORIZATION_HEADER, token.substring(7));
cookie.setPath("/");
response.addCookie(cookie);
} catch (HttpClientErrorException e){
return ResponseEntity.badRequest().body(new CommonResponseDto("로그인 실패", HttpStatus.BAD_REQUEST.value()));
}
return ResponseEntity.ok().body(new CommonResponseDto("로그인 성공", HttpStatus.OK.value()));
}
kakaoService - kakaoLogin
public String kakaoLogin(String code, HttpServletResponse response) throws JsonProcessingException {
KakaoUserInfoDto kakaoUserInfo = getKakaoUserInfo(code);
User kakaoUser = registerKakaoUserIfNeeded(kakaoUserInfo);
String createToken = jwtUtil.createToken(kakaoUser.getUsername(), kakaoUser.getRole());
response.addHeader(JwtUtil.AUTHORIZATION_HEADER, createToken);
return createToken;
}
jwtUtil - createToken
public String createToken(String username, UserRoleEnum role) {
Date date = new Date();
long TOKEN_TIME = 60 * 60 * 1000;
return BEARER_PREFIX +
Jwts.builder()
.setSubject(username)
.claim(AUTHORIZATION_KEY, role)
.setExpiration(new Date(date.getTime() + TOKEN_TIME))
.setIssuedAt(date)
.signWith(key, signatureAlgorithm)
.compact();
}